[Zope-dev] Possible DateTime timezone-related regression in Zope 2.12

Martin Aspeli optilude+lists at gmail.com
Sat Jan 9 22:36:49 EST 2010


We have a failing test in plone.app.dexterity 1.0a7. This is simply 
trying to compare two dates:

     >>> from DateTime import DateTime
     >>> DateTime() > DateTime(md.CreationDate())

At least here in Australia, the second test fails. Right now, the 
following expressions are:

     DateTime(): DateTime('2010/01/10 11:20:24.718203 GMT+8')
     md.CreationDate(): '2010-01-10 11:19:57'
     DateTime(md.CreationDate()): DateTime('2010/01/10 11:19:57 GMT+0')

On Zope 2.10, it's a different story:

    DateTime(): DateTime('2010/01/10 11:34:01.508 GMT+8')
    md.CreationDate(): '2010-01-10 11:24:42'
    DateTime(md.CreationDate()): DateTime('2010/01/10 11:24:42 GMT+8')

Andi Zeidler looked into it briefly, and said the following:

imho, this is due a bug in `DateTime` 2.12.0.  the newer version behaves 
differently when it's initialized via a string representation of a date 
— it interprets the given date to be GMT while before it was taken to be 
from your local time zone:

  $ cd ~/plone/coredev/branches
  $ cat foo.py
  from DateTime import DateTime
  print DateTime('2010-01-09 00:34:37')
  $ 3.3/bin/zopepy foo.py
  2010/01/09 00:34:37 GMT+1
  $ 4.0/bin/zopepy foo.py
  2010/01/09 00:34:37 GMT+0

so in your test, `DateTime(md.CreationDate())` will always be the 
current time, but with an implicitly added 'GMT+0' while `DateTime()` 
will be the current time in your local time zone.  so if i'm not 
mistaken, on plone 4.0 the test with fail for you an me (in 'GMT+x' time 
zones) and pass in the u.s.  fun! :)

Does anyone know if this change was deliberate, or what may have happened?


Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book

More information about the Zope-Dev mailing list