[Zope] DateTime strftime problem

Jürgen Herrmann Juergen.Herrmann at XLhost.de
Tue Nov 8 11:02:55 EST 2005


[ Jürgen Herrmann wrote:]
> i looked at the source of DateTime::strftime(), surpirse, surprise :)
> strftime uses python's datetime class and it's strftime method!
> but no care is taken at this time for timezone information, so i
> decided to code a tzinfo subclass for datetime that can represent
> fixed offset from gmt (no dst) and hand one such instance to
> datetime.fromtimestamp(). seems like this code is working correctly now.
> i'll run it against some tests tomorrow and report back on the results.
>
> regards, juergen herrmann

if i run the DateTime testsuite against my patched version:
======================================================================
ERROR: Checks strftime in dates <= 1900 or >= 2038
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.4/unittest.py", line 260, in run
    testMethod()
  File "/home/bliss/zope/lib/python/DateTime/tests/testDateTime.py", line
366, in testStrftimeFarDates
    self.assertEqual(dt.strftime('%d/%m/%Y'), '30/01/1900')
  File "/home/bliss/zope/lib/python/DateTime/DateTime.py", line 1542, in
strftime
    ds = datetime.fromtimestamp(self._t+offsetsecs, tzi).strftime(format)
ValueError: timestamp out of range for platform time_t

======================================================================
ERROR: Checks time zone in dates <= 1900 or >= 2038
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.4/unittest.py", line 260, in run
    testMethod()
  File "/home/bliss/zope/lib/python/DateTime/tests/testDateTime.py", line
374, in testZoneInFarDates
    self.assertEqual(dt1.strftime('%d/%m/%Y %H:%M'),
dt2.strftime('%d/%m/%Y %H:%M'))
  File "/home/bliss/zope/lib/python/DateTime/DateTime.py", line 1542, in
strftime
    ds = datetime.fromtimestamp(self._t+offsetsecs, tzi).strftime(format)
ValueError: timestamp out of range for platform time_t

======================================================================
FAIL: strftime timezone testing
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.4/unittest.py", line 260, in run
    testMethod()
  File "/home/bliss/zope/lib/python/DateTime/tests/testDateTime.py", line
361, in testStrftimeTZhandling
    self.assertEqual(dt_string, dt_localstring)
  File "/usr/lib/python2.4/unittest.py", line 333, in failUnlessEqual
    raise self.failureException, \
AssertionError: '2003-11-19 17:32 -0215' != '2003-11-19 21:47 GMT+0100'

----------------------------------------------------------------------
Ran 32 tests in 13.056s

th first two are obviously side effects from using a timestamp for
the instantiation of my datetime object, could be fixed, not the focus
for now.

the third one brings me back to my initial question:
what is this code snippet supposed to return?
>>> d = DateTime('2005/04/03 02:01 UTC')
>>> d.toZone('GMT+1').strftime('%Y/%m/%d %H:%M %Z')
'2005/04/03 03:01 GMT+0100'

is this correct?

if so, the i would tend to say, the testcase was written to pass with
wrong strftime() behaviour. (*duck*)

regards, juergen herrmann

ps: tomorrow has been shifted to today due to a bug in my brain's
datetime implementation, so i ran the tests today :)
_______________________________________________________________________

>> XLhost.de - eXperts in Linux hosting <<

Jürgen Herrmann
Bruderwöhrdstraße 15b, DE-93051 Regensburg

Fon:  +49 (0)700 XLHOSTDE [0700 95467833]
Fax:  +49 (0)721 151 463027
WEB:  http://www.XLhost.de


More information about the Zope mailing list