The problem seems to be caused by the fix to bug 564607 (
https://bugs.launchpad.net/python/+bug/564607 ) which is a fix to issue
762963  in python ( http://bugs.python.org/issue762963 ).  The "fix"
doesn't seem settled in the python community.  In the python2.6 source
package the patch file in debian/patches/issue762963.diff contains the
"fix".

The source of the problem seems to be the addition of a call to mktime.  What 
the code does with the "fix" is to
(1) zero struct tm *p
(2) call mktime(p) which sets timezone/dst information
(3) then fill in the rest of the tm structure with the date/time we are 
converting
This leads to the wrong dst information being used if our current dst is not in 
agreement with the dst of the time we are converting.   This issue is really in 
gettmarg().

Attached is a program that shows the problem.  In this program a struct
tm buffer is created and zeroed.  mktime is then called and the elements
of struct tm printed.  Next the date/time entries are filled in and
strftime() is called.  Finally the timezone information is zeroed in the
structure and strftime() is called again.  I find the following results:

Ubuntu 10.10 or 11.04 machine:
0 0 0 31 11 -1 0 364 0  -18000 EST   <-- Oddly some entries are set
Sun Jul  4 12:23:45 2010 EST    <-- Incorrect timezone
Sun Jul  4 12:23:45 2010 EDT    <-- correct timezone

Debian Squeeze machine:
0 0 0 0 0 0 0 0 0  0 (null)
Sun Jul  4 12:23:45 2010 EDT
Sun Jul  4 12:23:45 2010 EDT

OpenBSD4.8 machine:
0 0 0 0 0 0 0 0 0  0 (null)
Sun Jul  4 12:23:45 2010 EDT
Sun Jul  4 12:23:45 2010 EDT

Notice that the Ubuntu machines reset some of the fields:
tm_mday = 31
tm_mon = 11
tm_year = -1
tm_yday = 364
plus the timezone related fields.  The Debian machine doesn't.

Perhaps this really is an issue in eglibc and/or some changes in eglibc
have obviated the need for this patch.

On Ubuntu 11.04 the patch issue762963.diff is included in the source
package for python2.7 but is NOT applied, thus the python test code
given in the original report runs correctly.


** Bug watch added: Python Roundup #762963
   http://bugs.python.org/issue762963

** Attachment added: "mktime and strftime test code"
   
https://bugs.launchpad.net/ubuntu/+source/python2.6/+bug/711541/+attachment/1855321/+files/mktime_test.c

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/711541

Title:
  time module in python 2.6 not working correctly.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to