summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2015-06-15 13:47:25 -0700
committerAsk Solem <ask@celeryproject.org>2015-06-15 13:50:18 -0700
commit0002ee694767e50f84860fb28ac15c9dd74b936b (patch)
treedbe3632f10aca9b60bd54897f70c195a53d5bed1
parent96e1c8504799cf51a3c7cbec5d7ceccb7f78112d (diff)
downloadpy-amqp-0002ee694767e50f84860fb28ac15c9dd74b936b.tar.gz
AMQP Timestamp type should be in GMT timezone. Closes #67
-rw-r--r--amqp/serialization.py7
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):