diff options
author | Guido van Rossum <guido@python.org> | 1998-02-19 00:28:58 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-02-19 00:28:58 (GMT) |
commit | a73033fcc2916a416561bfad384afb900f207a27 (patch) | |
tree | 6e2dfb656adf07f2a5909e6aa2cb3687b7b4cf2c | |
parent | ce0e17555424a90d6dd3f5ae8f4e586280dc3b44 (diff) | |
download | cpython-a73033fcc2916a416561bfad384afb900f207a27.zip cpython-a73033fcc2916a416561bfad384afb900f207a27.tar.gz cpython-a73033fcc2916a416561bfad384afb900f207a27.tar.bz2 |
Feature added by Bill van Melle: when no timezone is present, assume
local time -- that's better than failure.
-rw-r--r-- | Doc/lib/librfc822.tex | 4 | ||||
-rw-r--r-- | Doc/librfc822.tex | 4 | ||||
-rw-r--r-- | Lib/rfc822.py | 21 |
3 files changed, 20 insertions, 9 deletions
diff --git a/Doc/lib/librfc822.tex b/Doc/lib/librfc822.tex index aa7e459..d764ce6 100644 --- a/Doc/lib/librfc822.tex +++ b/Doc/lib/librfc822.tex @@ -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 is the opposite of the sign of the \code{time.timezone} variable for 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} \begin{funcdesc}{mktime_tz}{tuple} 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 local time and then compensates for the timezone difference; this may yield a slight error around daylight savings time diff --git a/Doc/librfc822.tex b/Doc/librfc822.tex index aa7e459..d764ce6 100644 --- a/Doc/librfc822.tex +++ b/Doc/librfc822.tex @@ -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 is the opposite of the sign of the \code{time.timezone} variable for 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} \begin{funcdesc}{mktime_tz}{tuple} 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 local time and then compensates for the timezone difference; this may yield a slight error around daylight savings time diff --git a/Lib/rfc822.py b/Lib/rfc822.py index f58543a..967a85e 100644 --- a/Lib/rfc822.py +++ b/Lib/rfc822.py @@ -660,7 +660,7 @@ def parsedate_tz(data): tss = string.atoi(tss) except string.atoi_error: return None - tzoffset=0 + tzoffset=None tz=string.upper(tz) if _timezones.has_key(tz): tzoffset=_timezones[tz] @@ -670,10 +670,13 @@ def parsedate_tz(data): except string.atoi_error: pass # Convert a timezone offset into seconds ; -0500 -> -18000 - if tzoffset<0: tzsign=-1 - else: tzsign=1 - tzoffset=tzoffset*tzsign - tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60) + if tzoffset: + if tzoffset < 0: + tzsign = -1 + tzoffset = -tzoffset + else: + tzsign = 1 + tzoffset = tzsign * ( (tzoffset/100)*3600 + (tzoffset % 100)*60) tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 0, tzoffset) return tuple @@ -695,8 +698,12 @@ def mktime_tz(data): switch dates. Not enough to worry about for common use. """ - t = time.mktime(data[:8] + (0,)) - return t - data[9] - time.timezone + 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,)) + return t - data[9] - time.timezone # When used as script, run a small test program. |