New submission from Mitar <[email protected]>:
I would suggest improvement of mktime_tz to use calendar.timegm internally
instead of time.mktime. The problem is that on Windows mktime_tz fails with
"mktime argument out of range" for this code:
mktime_tz(parsedate_tz('Thu, 1 Jan 1970 00:00:00 GMT'))
if user is in GMT+X timezone. Obviously, "Thu, 1 Jan 1970 00:00:00 GMT" is not
out of range. But because mktime_tz uses internally time.mktime which takes
into the account local time (and local timezone) and then compensate for the
timeline, out of range condition happens. I would suggest such implementation:
def mktime_tz(data):
"""Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp."""
if data[9] is None:
# No zone info, so localtime is better assumption than GMT
return time.mktime(data[:8] + (-1,))
else:
t = calendar.timegm(data[:8] + (0,))
return t - data[9]
It does not raise and exception, and it is also much cleaner: directly using
GMT function and not localtime with timezone compensation.
----------
components: Library (Lib)
messages: 159074
nosy: mitar
priority: normal
severity: normal
status: open
title: Improve mktime_tz to use calendar.timegm instead of time.mktime
type: behavior
versions: Python 2.7
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue14653>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com