Changeset 8831
- Timestamp:
- Nov 20, 2009, 10:40:49 PM (14 years ago)
- Location:
- branches/0.11-stable/trac/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/0.11-stable/trac/util/datefmt.py
r8519 r8831 42 42 Any other input will trigger a `TypeError`. 43 43 """ 44 tzinfo = tzinfo or localtz 44 45 if t is None: 45 return datetime.now(tzinfo or localtz)46 return tzinfo.localize(datetime.now()) 46 47 elif isinstance(t, datetime): 47 48 return t 48 49 elif isinstance(t, date): 49 return datetime(t.year, t.month, t.day, tzinfo=tzinfo or localtz)50 return tzinfo.localize(datetime(t.year, t.month, t.day)) 50 51 elif isinstance(t, (int,long,float)): 51 return datetime.fromtimestamp(t, tzinfo or localtz)52 return tzinfo.localize(datetime.fromtimestamp(t)) 52 53 raise TypeError('expecting datetime, int, long, float, or None; got %s' % 53 54 type(t)) … … 233 234 'is not known. Try "%s" instead.' % (text, hint), 234 235 'Invalid Date') 235 dt = datetime(*(tm[0:6] + (0, tzinfo)))236 dt = tzinfo.localize(datetime(*tm[0:6])) 236 237 # Make sure we can convert it to a timestamp and back - fromtimestamp() 237 238 # may raise ValueError if larger than platform C localtime() or gmtime() … … 268 269 def dst(self, dt): 269 270 return _zero 271 272 def localize(self, dt, is_dst=False): 273 if dt.tzinfo is not None: 274 raise ValueError('Not naive datetime (tzinfo is already set)') 275 return dt.replace(tzinfo=self) 270 276 271 277 … … 307 313 except OverflowError: 308 314 return False 315 316 def localize(self, dt, is_dst=False): 317 if dt.tzinfo is not None: 318 raise ValueError('Not naive datetime (tzinfo is already set)') 319 return dt.replace(tzinfo=self) 309 320 310 321 -
branches/0.11-stable/trac/util/tests/datefmt.py
r8519 r8831 42 42 tz.utcoffset(None)) 43 43 self.assertEqual('GMT +4:00', tz.zone) 44 45 def test_parse_date(self): 46 tz = datefmt.get_timezone('Europe/Zurich') 47 t = datefmt.parse_date('2009-12-01T12:00:00', tz) 48 t_utc = datetime.datetime(2009, 12, 1, 11, 0, 0, 0, datefmt.utc) 49 self.assertEqual(t_utc, t) 50 51 def test_parse_date_dst(self): 52 tz = datefmt.get_timezone('Europe/Zurich') 53 t = datefmt.parse_date('2009-08-01T12:00:00', tz) 54 t_utc = datetime.datetime(2009, 8, 1, 10, 0, 0, 0, datefmt.utc) 55 self.assertEqual(t_utc, t) 56 44 57 45 58 class DateFormatTestCase(unittest.TestCase): … … 94 107 datefmt.format_date(a_date, format='%Y-%m-%d')) 95 108 109 96 110 def suite(): 97 111 suite = unittest.TestSuite()
Note:
See TracChangeset
for help on using the changeset viewer.