diff options
author | Ask Solem <ask@celeryproject.org> | 2015-06-15 13:47:25 -0700 |
---|---|---|
committer | Ask Solem <ask@celeryproject.org> | 2015-06-15 13:50:18 -0700 |
commit | 0002ee694767e50f84860fb28ac15c9dd74b936b (patch) | |
tree | dbe3632f10aca9b60bd54897f70c195a53d5bed1 | |
parent | 96e1c8504799cf51a3c7cbec5d7ceccb7f78112d (diff) | |
download | py-amqp-0002ee694767e50f84860fb28ac15c9dd74b936b.tar.gz |
AMQP Timestamp type should be in GMT timezone. Closes #67
-rw-r--r-- | amqp/serialization.py | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/amqp/serialization.py b/amqp/serialization.py index 4ad1b06..4b54336 100644 --- a/amqp/serialization.py +++ b/amqp/serialization.py @@ -21,13 +21,13 @@ Convert between bytestreams and higher-level AMQP types. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 from __future__ import absolute_import +import calendar import sys from datetime import datetime from decimal import Decimal from io import BytesIO from struct import pack, unpack -from time import mktime from .exceptions import FrameSyntaxError from .five import int_types, long_t, string, string_t, items @@ -224,7 +224,7 @@ class AMQPReader(object): expressed as localtime. """ - return datetime.fromtimestamp(self.read_longlong()) + return datetime.utcfromtimestamp(self.read_longlong()) class AMQPWriter(object): @@ -377,7 +377,6 @@ class AMQPWriter(object): elif isinstance(v, datetime): self.write(b'T') self.write_timestamp(v) - ## FIXME: timezone ? elif isinstance(v, dict): self.write(b'F') self.write_table(v) @@ -402,7 +401,7 @@ class AMQPWriter(object): def write_timestamp(self, v): """Write out a Python datetime.datetime object as a 64-bit integer representing seconds since the Unix epoch.""" - self.out.write(pack('>q', long_t(mktime(v.timetuple())))) + self.out.write(pack('>Q', long_t(calendar.timegm(v.utctimetuple())))) class GenericContent(object): |