def writeDate(self, n): """ Writes a C{datetime} instance to the stream. @type n: L{datetime} @param n: The C{Date} data to be encoded to the AMF3 data stream. """ if isinstance(n, datetime.time): raise pyamf.EncodeError( 'A datetime.time instance was found but ' 'AMF3 has no way to encode time objects. Please use ' 'datetime.datetime instead (got:%r)' % (n, )) self.stream.write(TYPE_DATE) ref = self.context.getObjectReference(n) if ref != -1: self._writeInteger(ref << 1) return self.context.addObject(n) self.stream.write_uchar(REFERENCE_BIT) if self.timezone_offset is not None: n -= self.timezone_offset ms = util.get_timestamp(n) self.stream.write_double(ms * 1000.0)
def writeDate(self, d): """ Writes a date to the data stream. @type d: Instance of C{datetime.datetime} @param d: The date to be encoded to the AMF0 data stream. """ if isinstance(d, datetime.time): raise pyamf.EncodeError( 'A datetime.time instance was found but AMF0 has no way to ' 'encode time objects. Please use datetime.datetime instead ' '(got:%r)' % (d,) ) # According to the Red5 implementation of AMF0, dates references are # created, but not used. if self.timezone_offset is not None: d -= self.timezone_offset secs = util.get_timestamp(d) tz = 0 self.writeType(TYPE_DATE) self.stream.write_double(secs * 1000.0) self.stream.write_short(tz)
def writeDate(self, n): """ Writes a C{datetime} instance to the stream. Does not support C{datetime.time} instances because AMF3 has no way to encode time objects, so please use C{datetime.datetime} instead. @type n: L{datetime} @param n: The C{Date} data to be encoded to the AMF3 data stream. @raise EncodeError: A datetime.time instance was found """ if isinstance(n, datetime.time): raise pyamf.EncodeError('A datetime.time instance was found but ' 'AMF3 has no way to encode time objects. Please use ' 'datetime.datetime instead (got:%r)' % (n,)) self.stream.write(TYPE_DATE) ref = self.context.getObjectReference(n) if ref != -1: self._writeInteger(ref << 1) return self.context.addObject(n) self.stream.write_uchar(REFERENCE_BIT) if self.timezone_offset is not None: n -= self.timezone_offset ms = util.get_timestamp(n) self.stream.write_double(ms * 1000.0)
def writeDate(self, d): """ Writes a date to the data stream. @type d: Instance of C{datetime.datetime} @param d: The date to be encoded to the AMF0 data stream. """ # According to the Red5 implementation of AMF0, dates references are # created, but not used. secs = util.get_timestamp(d) tz = 0 self.writeType(ASTypes.DATE) self.stream.write_double(secs * 1000.0) self.stream.write_short(tz)
def writeDate(self, d): """ Writes a date to the data stream. @type d: Instance of C{datetime.datetime} @param d: The date to be written. """ # According to the Red5 implementation of AMF0, dates references are # created, but not used secs = util.get_timestamp(d) tz = 0 self.writeType(ASTypes.DATE) self.stream.write_double(secs * 1000.0) self.stream.write_short(tz)
def test_preserved_microseconds(self): dt = datetime(2009, 3, 8, 23, 30, 47, 770122) ts = util.get_timestamp(dt) self.assertEqual(util.get_datetime(ts), dt)
def test_get_timestamp(self): self.assertEqual( util.get_timestamp(datetime(2007, 11, 12)), 1194825600 )
def test_get_timestamp(self): self.assertEqual(util.get_timestamp(datetime(2007, 11, 12)), 1194825600)