mirror of
https://github.com/python/cpython.git
synced 2025-11-09 14:06:30 +00:00
Feature added by Bill van Melle: when no timezone is present, assume
local time -- that's better than failure.
This commit is contained in:
parent
ce0e175554
commit
a73033fcc2
3 changed files with 20 additions and 9 deletions
|
|
@ -47,11 +47,13 @@ offset of the date's timezone from UTC (which is the official term
|
||||||
for Greenwich Mean Time). (Note that the sign of the timezone offset
|
for Greenwich Mean Time). (Note that the sign of the timezone offset
|
||||||
is the opposite of the sign of the \code{time.timezone} variable for
|
is the opposite of the sign of the \code{time.timezone} variable for
|
||||||
the same timezone; the latter variable follows the \POSIX{} standard
|
the same timezone; the latter variable follows the \POSIX{} standard
|
||||||
while this module follows \rfc{822}.)
|
while this module follows \rfc{822}.) If the input string has no
|
||||||
|
timezone, the last element of the tuple returned is \code{None}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
\begin{funcdesc}{mktime_tz}{tuple}
|
\begin{funcdesc}{mktime_tz}{tuple}
|
||||||
Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
|
Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
|
||||||
|
It the timezone item in the tuple is \code{None}, assume local time.
|
||||||
Minor deficiency: this first interprets the first 8 elements as a
|
Minor deficiency: this first interprets the first 8 elements as a
|
||||||
local time and then compensates for the timezone difference;
|
local time and then compensates for the timezone difference;
|
||||||
this may yield a slight error around daylight savings time
|
this may yield a slight error around daylight savings time
|
||||||
|
|
|
||||||
|
|
@ -47,11 +47,13 @@ offset of the date's timezone from UTC (which is the official term
|
||||||
for Greenwich Mean Time). (Note that the sign of the timezone offset
|
for Greenwich Mean Time). (Note that the sign of the timezone offset
|
||||||
is the opposite of the sign of the \code{time.timezone} variable for
|
is the opposite of the sign of the \code{time.timezone} variable for
|
||||||
the same timezone; the latter variable follows the \POSIX{} standard
|
the same timezone; the latter variable follows the \POSIX{} standard
|
||||||
while this module follows \rfc{822}.)
|
while this module follows \rfc{822}.) If the input string has no
|
||||||
|
timezone, the last element of the tuple returned is \code{None}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
\begin{funcdesc}{mktime_tz}{tuple}
|
\begin{funcdesc}{mktime_tz}{tuple}
|
||||||
Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
|
Turn a 10-tuple as returned by \code{parsedate_tz()} into a UTC timestamp.
|
||||||
|
It the timezone item in the tuple is \code{None}, assume local time.
|
||||||
Minor deficiency: this first interprets the first 8 elements as a
|
Minor deficiency: this first interprets the first 8 elements as a
|
||||||
local time and then compensates for the timezone difference;
|
local time and then compensates for the timezone difference;
|
||||||
this may yield a slight error around daylight savings time
|
this may yield a slight error around daylight savings time
|
||||||
|
|
|
||||||
|
|
@ -660,7 +660,7 @@ def parsedate_tz(data):
|
||||||
tss = string.atoi(tss)
|
tss = string.atoi(tss)
|
||||||
except string.atoi_error:
|
except string.atoi_error:
|
||||||
return None
|
return None
|
||||||
tzoffset=0
|
tzoffset=None
|
||||||
tz=string.upper(tz)
|
tz=string.upper(tz)
|
||||||
if _timezones.has_key(tz):
|
if _timezones.has_key(tz):
|
||||||
tzoffset=_timezones[tz]
|
tzoffset=_timezones[tz]
|
||||||
|
|
@ -670,9 +670,12 @@ def parsedate_tz(data):
|
||||||
except string.atoi_error:
|
except string.atoi_error:
|
||||||
pass
|
pass
|
||||||
# Convert a timezone offset into seconds ; -0500 -> -18000
|
# Convert a timezone offset into seconds ; -0500 -> -18000
|
||||||
if tzoffset<0: tzsign=-1
|
if tzoffset:
|
||||||
else: tzsign=1
|
if tzoffset < 0:
|
||||||
tzoffset=tzoffset*tzsign
|
tzsign = -1
|
||||||
|
tzoffset = -tzoffset
|
||||||
|
else:
|
||||||
|
tzsign = 1
|
||||||
tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60)
|
tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60)
|
||||||
tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset)
|
tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset)
|
||||||
return tuple
|
return tuple
|
||||||
|
|
@ -695,6 +698,10 @@ def mktime_tz(data):
|
||||||
switch dates. Not enough to worry about for common use.
|
switch dates. Not enough to worry about for common use.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if data[9] is None:
|
||||||
|
# No zone info, so localtime is better assumption than GMT
|
||||||
|
return time.mktime(data[:8] + (-1,))
|
||||||
|
else:
|
||||||
t = time.mktime(data[:8] + (0,))
|
t = time.mktime(data[:8] + (0,))
|
||||||
return t - data[9] - time.timezone
|
return t - data[9] - time.timezone
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue