Log message for revision 30383: - Collector #1780: DateTime.strftime() now handles dates <= 1900 or >= 2038
Changed: U Zope/trunk/doc/CHANGES.txt U Zope/trunk/lib/python/DateTime/DateTime.py U Zope/trunk/lib/python/DateTime/tests/testDateTime.py -=- Modified: Zope/trunk/doc/CHANGES.txt =================================================================== --- Zope/trunk/doc/CHANGES.txt 2005-05-18 14:02:32 UTC (rev 30382) +++ Zope/trunk/doc/CHANGES.txt 2005-05-18 15:21:11 UTC (rev 30383) @@ -31,6 +31,11 @@ Bugs fixed + - Collector #1780: DateTime.strftime() now handles dates <= 1900 or + >= 2038 + + - Collector #1775: turning off debug mode by default + - Collector #1784: fixed handling of multiple attributes in ZCTextIndex - Don't copy '.svn' directories from skeleton into an instance Modified: Zope/trunk/lib/python/DateTime/DateTime.py =================================================================== --- Zope/trunk/lib/python/DateTime/DateTime.py 2005-05-18 14:02:32 UTC (rev 30382) +++ Zope/trunk/lib/python/DateTime/DateTime.py 2005-05-18 15:21:11 UTC (rev 30383) @@ -18,6 +18,7 @@ import re, math, DateTimeZone from time import time, gmtime, localtime from time import daylight, timezone, altzone, strftime +from datetime import datetime default_datefmt = None @@ -1481,7 +1482,15 @@ def strftime(self, format): # Format the date/time using the *current timezone representation*. - return strftime(format, safelocaltime(self.timeTime())) + x = _calcDependentSecond2(self._year, self._month, self._day, + self._hour, self._minute, self._second) + ltz = self._calcTimezoneName(x, 0) + tzdiff = _tzoffset(ltz, self._t) - _tzoffset(self._tz, self._t) + zself = self + tzdiff/86400.0 + microseconds = int((zself._second - zself._nearsec) * 1000000) + return datetime(zself._year, zself._month, zself._day, zself._hour, + zself._minute, int(zself._nearsec), + microseconds).strftime(format) # General formats from previous DateTime def Date(self): Modified: Zope/trunk/lib/python/DateTime/tests/testDateTime.py =================================================================== --- Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2005-05-18 14:02:32 UTC (rev 30382) +++ Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2005-05-18 15:21:11 UTC (rev 30383) @@ -360,7 +360,21 @@ dt_localstring = dt_local.strftime(format) self.assertEqual(dt_string, dt_localstring) + def testStrftimeFarDates(self): + '''Checks strftime in dates <= 1900 or >= 2038''' + dt = DateTime('1900/01/30') + self.assertEqual(dt.strftime('%d/%m/%Y'), '30/01/1900') + dt = DateTime('2040/01/30') + self.assertEqual(dt.strftime('%d/%m/%Y'), '30/01/2040') + def testZoneInFarDates(self): + '''Checks time zone in dates <= 1900 or >= 2038''' + dt1 = DateTime('2040/01/30 14:33 GMT+1') + dt2 = DateTime('2040/01/30 11:33 GMT-2') + self.assertEqual(dt1.strftime('%d/%m/%Y %H:%M'), dt2.strftime('%d/%m/%Y %H:%M')) + + + def test_suite(): return unittest.makeSuite(DateTimeTests) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins