Message159074
| 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:32 | mitar | set | recipients:
+ mitar |
| 2012年04月23日 20:33:32 | mitar | set | messageid: <1335213212.56.0.724242644314.issue14653@psf.upfronthosting.co.za> |
| 2012年04月23日 20:33:31 | mitar | link | issue14653 messages |
| 2012年04月23日 20:33:31 | mitar | create |
|