secs += Leapsecs1972 + diff
if secs in Leapsecs:
secs += 1
- return secs + TAI64Base
+ return secs
def dumps(v):
raise NotImplementedError("no FLOAT* support")
if isinstance(v, datetime):
secs = int(v.replace(tzinfo=timezone.utc).timestamp())
- secs = utc2tai(secs)
+ secs = utc2tai(secs) + TAI64Base
if v.microsecond == 0:
return _byte(TagTAI64) + secs.to_bytes(8, "big")
return (
:returns: UTC seconds, or None of TAI equals to leap second
"""
- secs -= TAI64Base
diff = 0
for leapsec in Leapsecs:
if secs < leapsec:
asecs = int.from_bytes(v[1+8+4:1+8+4+4], "big")
if asecs > 999999999:
raise DecodeError("too many attoseconds")
- secs = tai2utc(secs, leapsecUTCAllow)
+ secs = tai2utc(secs - TAI64Base, leapsecUTCAllow)
if secs is None:
return Raw(v[0], v[1:1+l]), v[1+l:]
if (abs(secs) > (1 << 60)) or (asecs > 0) or ((nsecs % 1000) > 0):