Beispiel #1
0
 def test_date_functions__utc_only(self):
     if self.database.server_timezone != pytz.utc:
         raise unittest.SkipTest(
             'This test must run with UTC as the server timezone')
     d = date(2018, 12, 31)
     dt = datetime(2018, 12, 31, 11, 22, 33)
     athens_tz = pytz.timezone('Europe/Athens')
     self._test_func(F.toHour(dt), 11)
     self._test_func(F.toStartOfDay(dt),
                     datetime(2018, 12, 31, 0, 0, 0, tzinfo=pytz.utc))
     self._test_func(F.toTime(dt, pytz.utc),
                     datetime(1970, 1, 2, 11, 22, 33, tzinfo=pytz.utc))
     self._test_func(F.toTime(dt, 'Europe/Athens'),
                     athens_tz.localize(datetime(1970, 1, 2, 13, 22, 33)))
     self._test_func(F.toTime(dt, athens_tz),
                     athens_tz.localize(datetime(1970, 1, 2, 13, 22, 33)))
     self._test_func(F.toTimeZone(dt, 'Europe/Athens'),
                     athens_tz.localize(datetime(2018, 12, 31, 13, 22, 33)))
     self._test_func(F.now(),
                     datetime.utcnow().replace(tzinfo=pytz.utc,
                                               microsecond=0)
                     )  # FIXME this may fail if the timing is just right
     self._test_func(F.today(), datetime.utcnow().date())
     self._test_func(F.yesterday(),
                     datetime.utcnow().date() - timedelta(days=1))
     self._test_func(F.toYYYYMMDDhhmmss(dt), 20181231112233)
     self._test_func(F.formatDateTime(dt, '%D %T'), '12/31/18 11:22:33')
     self._test_func(F.addHours(d, 7),
                     datetime(2018, 12, 31, 7, 0, 0, tzinfo=pytz.utc))
     self._test_func(F.addMinutes(d, 7),
                     datetime(2018, 12, 31, 0, 7, 0, tzinfo=pytz.utc))
Beispiel #2
0
 def test_date_functions(self):
     d = date(2018, 12, 31)
     dt = datetime(2018, 12, 31, 11, 22, 33)
     self._test_func(F.toYear(d), 2018)
     self._test_func(F.toYear(dt), 2018)
     self._test_func(F.toISOYear(dt, 'Europe/Athens'),
                     2019)  # 2018-12-31 is ISO year 2019, week 1, day 1
     self._test_func(F.toQuarter(d), 4)
     self._test_func(F.toQuarter(dt), 4)
     self._test_func(F.toMonth(d), 12)
     self._test_func(F.toMonth(dt), 12)
     self._test_func(F.toWeek(d), 52)
     self._test_func(F.toWeek(dt), 52)
     self._test_func(F.toISOWeek(d),
                     1)  # 2018-12-31 is ISO year 2019, week 1, day 1
     self._test_func(F.toISOWeek(dt), 1)
     self._test_func(F.toDayOfYear(d), 365)
     self._test_func(F.toDayOfYear(dt), 365)
     self._test_func(F.toDayOfMonth(d), 31)
     self._test_func(F.toDayOfMonth(dt), 31)
     self._test_func(F.toDayOfWeek(d), 1)
     self._test_func(F.toDayOfWeek(dt), 1)
     self._test_func(F.toMinute(dt), 22)
     self._test_func(F.toSecond(dt), 33)
     self._test_func(F.toMonday(d), d)
     self._test_func(F.toMonday(dt), d)
     self._test_func(F.toStartOfMonth(d), date(2018, 12, 1))
     self._test_func(F.toStartOfMonth(dt), date(2018, 12, 1))
     self._test_func(F.toStartOfQuarter(d), date(2018, 10, 1))
     self._test_func(F.toStartOfQuarter(dt), date(2018, 10, 1))
     self._test_func(F.toStartOfYear(d), date(2018, 1, 1))
     self._test_func(F.toStartOfYear(dt), date(2018, 1, 1))
     self._test_func(F.toStartOfMinute(dt),
                     datetime(2018, 12, 31, 11, 22, 0, tzinfo=pytz.utc))
     self._test_func(F.toStartOfFiveMinute(dt),
                     datetime(2018, 12, 31, 11, 20, 0, tzinfo=pytz.utc))
     self._test_func(F.toStartOfFifteenMinutes(dt),
                     datetime(2018, 12, 31, 11, 15, 0, tzinfo=pytz.utc))
     self._test_func(F.toStartOfHour(dt),
                     datetime(2018, 12, 31, 11, 0, 0, tzinfo=pytz.utc))
     self._test_func(F.toStartOfISOYear(dt), date(2018, 12, 31))
     self._test_func(F.toStartOfTenMinutes(dt),
                     datetime(2018, 12, 31, 11, 20, 0, tzinfo=pytz.utc))
     self._test_func(F.toStartOfWeek(dt), date(2018, 12, 30))
     self._test_func(F.toTime(dt),
                     datetime(1970, 1, 2, 11, 22, 33, tzinfo=pytz.utc))
     self._test_func(F.toUnixTimestamp(dt, 'UTC'),
                     int(dt.replace(tzinfo=pytz.utc).timestamp()))
     self._test_func(F.toYYYYMM(d), 201812)
     self._test_func(F.toYYYYMM(dt), 201812)
     self._test_func(F.toYYYYMM(dt, 'Europe/Athens'), 201812)
     self._test_func(F.toYYYYMMDD(d), 20181231)
     self._test_func(F.toYYYYMMDD(dt), 20181231)
     self._test_func(F.toYYYYMMDD(dt, 'Europe/Athens'), 20181231)
     self._test_func(F.toYYYYMMDDhhmmss(d), 20181231000000)
     self._test_func(F.toYYYYMMDDhhmmss(dt, 'Europe/Athens'),
                     20181231132233)
     self._test_func(F.toRelativeYearNum(dt), 2018)
     self._test_func(F.toRelativeYearNum(dt, 'Europe/Athens'), 2018)
     self._test_func(F.toRelativeMonthNum(dt), 2018 * 12 + 12)
     self._test_func(F.toRelativeMonthNum(dt, 'Europe/Athens'),
                     2018 * 12 + 12)
     self._test_func(F.toRelativeWeekNum(dt), 2557)
     self._test_func(F.toRelativeWeekNum(dt, 'Europe/Athens'), 2557)
     self._test_func(F.toRelativeDayNum(dt), 17896)
     self._test_func(F.toRelativeDayNum(dt, 'Europe/Athens'), 17896)
     self._test_func(F.toRelativeHourNum(dt), 429515)
     self._test_func(F.toRelativeHourNum(dt, 'Europe/Athens'), 429515)
     self._test_func(F.toRelativeMinuteNum(dt), 25770922)
     self._test_func(F.toRelativeMinuteNum(dt, 'Europe/Athens'), 25770922)
     self._test_func(F.toRelativeSecondNum(dt), 1546255353)
     self._test_func(F.toRelativeSecondNum(dt, 'Europe/Athens'), 1546255353)
     self._test_func(F.timeSlot(dt),
                     datetime(2018, 12, 31, 11, 0, 0, tzinfo=pytz.utc))
     self._test_func(F.timeSlots(dt, 300),
                     [datetime(2018, 12, 31, 11, 0, 0, tzinfo=pytz.utc)])
     self._test_func(F.formatDateTime(dt, '%D %T', 'Europe/Athens'),
                     '12/31/18 13:22:33')
     self._test_func(F.addDays(d, 7), date(2019, 1, 7))
     self._test_func(F.addDays(dt, 7, 'Europe/Athens'))
     self._test_func(F.addHours(dt, 7, 'Europe/Athens'))
     self._test_func(F.addMinutes(dt, 7, 'Europe/Athens'))
     self._test_func(F.addMonths(d, 7), date(2019, 7, 31))
     self._test_func(F.addMonths(dt, 7, 'Europe/Athens'))
     self._test_func(F.addQuarters(d, 7))
     self._test_func(F.addQuarters(dt, 7, 'Europe/Athens'))
     self._test_func(F.addSeconds(d, 7))
     self._test_func(F.addSeconds(dt, 7, 'Europe/Athens'))
     self._test_func(F.addWeeks(d, 7))
     self._test_func(F.addWeeks(dt, 7, 'Europe/Athens'))
     self._test_func(F.addYears(d, 7))
     self._test_func(F.addYears(dt, 7, 'Europe/Athens'))
     self._test_func(F.subtractDays(d, 3))
     self._test_func(F.subtractDays(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractHours(d, 3))
     self._test_func(F.subtractHours(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractMinutes(d, 3))
     self._test_func(F.subtractMinutes(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractMonths(d, 3))
     self._test_func(F.subtractMonths(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractQuarters(d, 3))
     self._test_func(F.subtractQuarters(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractSeconds(d, 3))
     self._test_func(F.subtractSeconds(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractWeeks(d, 3))
     self._test_func(F.subtractWeeks(dt, 3, 'Europe/Athens'))
     self._test_func(F.subtractYears(d, 3))
     self._test_func(F.subtractYears(dt, 3, 'Europe/Athens'))
     self._test_func(F.now() + F.toIntervalSecond(3) +
                     F.toIntervalMinute(3) + F.toIntervalHour(3) +
                     F.toIntervalDay(3))
     self._test_func(F.now() + F.toIntervalWeek(3) + F.toIntervalMonth(3) +
                     F.toIntervalQuarter(3) + F.toIntervalYear(3))
     self._test_func(F.now() + F.toIntervalSecond(3000) -
                     F.toIntervalDay(3000) == F.now() +
                     timedelta(seconds=3000, days=-3000))