diff options
author | Skip Montanaro <skip@pobox.com> | 2008-04-18 20:35:46 (GMT) |
---|---|---|
committer | Skip Montanaro <skip@pobox.com> | 2008-04-18 20:35:46 (GMT) |
commit | b131f0468f9ecdddcbf1a932cdffc275c81d676a (patch) | |
tree | 0d76c81f1be2fc4686e0c8534192dddc7f47b7a2 /Lib/xmlrpclib.py | |
parent | 08923177b43dd31983447dfe7f25a736e946ed68 (diff) | |
download | cpython-b131f0468f9ecdddcbf1a932cdffc275c81d676a.zip cpython-b131f0468f9ecdddcbf1a932cdffc275c81d676a.tar.gz cpython-b131f0468f9ecdddcbf1a932cdffc275c81d676a.tar.bz2 |
resolve issue 2014
Diffstat (limited to 'Lib/xmlrpclib.py')
-rw-r--r-- | Lib/xmlrpclib.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py index d99f5d7..d635a4e 100644 --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -346,6 +346,20 @@ else: # @param value The time, given as an ISO 8601 string, a time # tuple, or a integer time value. +def _strftime(value): + if datetime: + if isinstance(value, datetime.datetime): + return "%04d%02d%02dT%02d:%02d:%02d" % ( + value.year, value.month, value.day, + value.hour, value.minute, value.second) + + if not isinstance(value, (TupleType, time.struct_time)): + if value == 0: + value = time.time() + value = time.localtime(value) + + return "%04d%02d%02dT%02d:%02d:%02d" % value[:6] + class DateTime: """DateTime wrapper for an ISO 8601 string or time tuple or localtime integer value to generate 'dateTime.iso8601' XML-RPC @@ -353,16 +367,10 @@ class DateTime: """ def __init__(self, value=0): - if not isinstance(value, StringType): - if datetime and isinstance(value, datetime.datetime): - self.value = value.strftime("%Y%m%dT%H:%M:%S") - return - if not isinstance(value, (TupleType, time.struct_time)): - if value == 0: - value = time.time() - value = time.localtime(value) - value = time.strftime("%Y%m%dT%H:%M:%S", value) - self.value = value + if isinstance(value, StringType): + self.value = value + else: + self.value = _strftime(value) def make_comparable(self, other): if isinstance(other, DateTime): @@ -772,7 +780,7 @@ class Marshaller: if datetime: def dump_datetime(self, value, write): write("<value><dateTime.iso8601>") - write(value.strftime("%Y%m%dT%H:%M:%S")) + write(_strftime(value)) write("</dateTime.iso8601></value>\n") dispatch[datetime.datetime] = dump_datetime |