This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author mitar
Recipients mitar
Date 2012-04-23.20:33:31
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1335213212.56.0.724242644314.issue14653@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2012-04-23 20:33:32mitarsetrecipients: + mitar
2012-04-23 20:33:32mitarsetmessageid: <1335213212.56.0.724242644314.issue14653@psf.upfronthosting.co.za>
2012-04-23 20:33:31mitarlinkissue14653 messages
2012-04-23 20:33:31mitarcreate