Log message for revision 85830: Merged the slinkp-datetime-200007 branch: fix the DateTime(anotherDateTime) constructor to preserve timezones.
Changed: U Zope/trunk/lib/python/DateTime/DateTime.py U Zope/trunk/lib/python/DateTime/tests/testDateTime.py -=- Modified: Zope/trunk/lib/python/DateTime/DateTime.py =================================================================== --- Zope/trunk/lib/python/DateTime/DateTime.py 2008-04-28 19:31:09 UTC (rev 85829) +++ Zope/trunk/lib/python/DateTime/DateTime.py 2008-04-28 20:23:11 UTC (rev 85830) @@ -68,7 +68,7 @@ (?:-? # one optional dash (?: # followed by: (?P<year_day>\d\d\d # three digits year day - (?!\d)) # when there's no fourth digit + (?!\d)) # when there is no fourth digit | # or: W # one W (?P<week>\d\d) # two digits week @@ -586,12 +586,11 @@ DateTime instance. """ t = arg.timeTime() - lt = safelocaltime(t) - tz = self.localZone(lt) + tz = arg.timezone() ms = (t - math.floor(t)) s,d = _calcSD(t) - yr,mo,dy,hr,mn,sc=lt[:6] - sc=sc+ms + yr,mo,dy,hr,mn,sc = gmtime(t)[:6] + sc = sc + ms elif isinstance(arg, datetime): yr,mo,dy,hr,mn,sc,numerictz,tznaive=self._parse_iso8601_preserving_tznaive(arg.isoformat()) Modified: Zope/trunk/lib/python/DateTime/tests/testDateTime.py =================================================================== --- Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2008-04-28 19:31:09 UTC (rev 85829) +++ Zope/trunk/lib/python/DateTime/tests/testDateTime.py 2008-04-28 20:23:11 UTC (rev 85830) @@ -386,6 +386,19 @@ d = DateTime('1999/04/12') self.assertEqual(DateTime(d), d) + def testCopyConstructorPreservesTimezone(self): + # test for https://bugs.launchpad.net/zope2/+bug/200007 + # This always worked in the local timezone, so we need at least + # two tests with different zones to be sure at least one of them + # is not local. + d = DateTime('2004/04/04') + self.assertEqual(DateTime(d).timezone(), d.timezone()) + d2 = DateTime('2008/04/25 12:00:00 EST') + self.assertEqual(DateTime(d2).timezone(), d2.timezone()) + d3 = DateTime('2008/04/25 12:00:00 PST') + self.assertEqual(DateTime(d3).timezone(), d3.timezone()) + + def testRFC822(self): # rfc822 conversion dt = DateTime('2002-05-02T08:00:00+00:00') _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins