Bugs item #1784777, was opened at 2007-08-30 06:12
Message generated for change (Comment added) made by jaraco
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=551954&aid=1784777&group_id=78018
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: win32
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Bernhard (bernhard_bender)
Assigned to: Nobody/Anonymous (nobody)
Summary: wrong timezone info returned by GetTimeZoneInformation()
Initial Comment:
In my setting:
Windows XP (German), up-to-date patches applied (including the lated August 2007 timezone database patch)
Python 2.4
pywin 2.10
Timezone Europe/Berlin (+0100) with DST enabled
win32api.GetTimeZoneInformation() returns seemingly wrong information for the date DST ends.
This is shown by the little scripe I have attached, which prints:
>>>
Daylight time begins : Last Sunday in March
Daylight time ends : Last Thursday in October
<<<
Since I am pretty sure that our DST does not end on a Thursday, I suspect an error in either the implementation of GetTimeZoneInformation() or in the WinXP TZ database.
----------------------------------------------------------------------
Comment By: Jason R. Coombs (jaraco)
Date: 2007-09-04 08:25
Message:
Logged In: YES
user_id=599869
Originator: NO
I looked into the .NET platform, but it uses a completely different
mechanism, apparently, so it was little help.
ipy
>>> from System import TimeZone
>>> localZone = TimeZone.CurrentTimeZone
>>> print localZone.StandardName
Eastern Standard Time
>>> localZone.GetDaylightChanges( 2007 ).Start
<System.DateTime object at 0x000000000000002D [11-Mar-2007 02:00:00]>
BTW, 11-Mar is correct (not 10-Mar like I mentioned earlier).
----------------------------------------------------------------------
Comment By: Jason R. Coombs (jaraco)
Date: 2007-09-04 08:13
Message:
Logged In: YES
user_id=599869
Originator: NO
It's not immediately clear to me what's going on here. It does appear as
if GetTimeZoneInformation() is returning the wrong values.
>>> win32api.GetTimeZoneInformation()
(2, (300, u'Eastern Standard Time', <PyTime:01-Nov-2000 02:00:00>, 0,
u'Eastern Daylight Time', <PyTime:02-Mar-2000 02:00:00>, -60))
One interesting point to note is the date is 2000 (not 2007). I don't
know why this would be. This year, it should be 04-Nov and 10-Mar. The
01-Nov and 02-Mar does coincide with first and second weeks, so perhaps
pywin32 is misinterpreting the structure? It's just a SYSTEMTIME, so that
seems unlikely.
I suspect this problem emerged with the introduction of dynamic time
zones. I'd be interested to see what the results of
GetDynamicTimeZoneInformation or GetTimeZoneInformationForYear would
produce.
I think the next steps are to (a) double-check the source to confirm the
fields are being parsed correctly and (b) to call this from another
platform (native C++ or .NET) to see what the results of the call are.
Bernhard, would you be willing to return the output of the raw
GetTimeZoneInformation() call? I think that would help me prove or
disprove my theory of the fields being mis-interpreted.
----------------------------------------------------------------------
Comment By: Jason R. Coombs (jaraco)
Date: 2007-09-04 07:40
Message:
Logged In: YES
user_id=599869
Originator: NO
I am seeing this behavior on my US Win Vista machine also. I will
investigate.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=551954&aid=1784777&group_id=78018
|