def test_datetime_timezone(self): class FixedNoDst(datetime.tzinfo): 'A timezone info with fixed offset, not DST' def utcoffset(self, dt): return datetime.timedelta(hours=2, minutes=30) def dst(self, dt): return None fixed_no_dst = FixedNoDst() class Fixed(FixedNoDst): 'A timezone info with DST' def dst(self, dt): return datetime.timedelta(hours=3, minutes=15) fixed = Fixed() d = datetime.datetime.now().replace(tzinfo=fixed_no_dst) timezone = _timezone(_timedelta_to_seconds(fixed_no_dst.\ utcoffset(None))) eq_(rfc3339(d), d.strftime('%Y-%m-%dT%H:%M:%S') + timezone) d = datetime.datetime.now().replace(tzinfo=fixed) timezone = _timezone(_timedelta_to_seconds(fixed.dst(None))) eq_(rfc3339(d), d.strftime('%Y-%m-%dT%H:%M:%S') + timezone)
def test_PDTChange(self): '''Test Daylight saving change''' # PDT switch happens at 2AM on March 14, 2010 # 1:59AM PST eq_(rfc3339(datetime.datetime(2010, 3, 14, 1, 59)), '2010-03-14T01:59:00-08:00') # 3AM PDT eq_(rfc3339(datetime.datetime(2010, 3, 14, 3, 0)), '2010-03-14T03:00:00-07:00')
def test_PSTChange(self): '''Test Standard time change''' # PST switch happens at 2AM on November 6, 2010 # 0:59AM PDT eq_(rfc3339(datetime.datetime(2010, 11, 7, 0, 59)), '2010-11-07T00:59:00-07:00') # 1:00AM PST # There's no way to have 1:00AM PST without a proper tzinfo eq_(rfc3339(datetime.datetime(2010, 11, 7, 1, 0)), '2010-11-07T01:00:00-07:00')
def test_date_utc(self): d = datetime.date.today() # Convert `date` to `datetime`, since `date` ignores seconds and hours # in timedeltas: # >>> datetime.date(2008, 9, 7) + datetime.timedelta(hours=23) # datetime.date(2008, 9, 7) d_utc = datetime.datetime(*d.timetuple()[:3]) + self.local_utcoffset eq_(rfc3339(d, utc=True), d_utc.strftime('%Y-%m-%dT%H:%M:%SZ'))
def _parse_date(self, date=None, utc=True, use_system_timezone=False): dt = None if date is None or not isinstance(date, datetime.datetime): if isinstance(date, basestring): try: dt = parse(date) except ValueError: dt = datetime.datetime.utcnow() else: dt = datetime.datetime.utcnow() else: dt = date return rfc3339(dt, utc=utc, use_system_timezone=use_system_timezone)
def test_1920(self): d = datetime.date(1920, 02, 29) x = rfc3339(d, utc=False, use_system_timezone=True) ok_(x.startswith('1920-02-29T00:00:00'))
def test_before_1970(self): d = datetime.date(1885, 01, 04) ok_(rfc3339(d).startswith('1885-01-04T00:00:00')) eq_(rfc3339(d, utc=True, use_system_timezone=False), '1885-01-04T00:00:00Z')
def test_timestamp_utc(self): d = time.time() d_utc = datetime.datetime.utcfromtimestamp(d) + self.local_utcoffset eq_(rfc3339(d), (d_utc.strftime('%Y-%m-%dT%H:%M:%S') + self.local_timezone))
def test_timestamp(self): d = time.time() eq_(rfc3339(d), datetime.datetime.fromtimestamp(d).\ strftime('%Y-%m-%dT%H:%M:%S') + self.local_timezone)
def test_date(self): d = datetime.date.today() eq_(rfc3339(d), d.strftime('%Y-%m-%dT%H:%M:%S') + self.local_timezone)
def test_datetime_utc(self): d = datetime.datetime.now() d_utc = d + self.local_utcoffset eq_(rfc3339(d, utc=True), d_utc.strftime('%Y-%m-%dT%H:%M:%SZ'))