Message 237527 - Python tracker (original) (raw)
First, datetime.utcfromtimestamp() drops fractional part of Decimal argument:
import datetime from decimal import Decimal as D datetime.datetime.utcfromtimestamp(1425808327.307651) datetime.datetime(2015, 3, 8, 9, 52, 7, 307651) datetime.datetime.utcfromtimestamp(D(1425808327.307651)) datetime.datetime(2015, 3, 8, 9, 52, 7)
Second, it works only with C implementation. With Python implementation Decimals are not supported at all.
del sys.modules['datetime'] sys.modules['_datetime'] = None import datetime datetime.datetime.utcfromtimestamp(D(1425808327.307651)) Traceback (most recent call last): File "", line 1, in File "/usr/lib/python3.4/datetime.py", line 1374, in utcfromtimestamp t, frac = divmod(t, 1.0) TypeError: unsupported operand type(s) for divmod(): 'decimal.Decimal' and 'float'
In 2.7 Decimals are accepted and are not truncated.
import datetime from decimal import Decimal as D datetime.datetime.utcfromtimestamp(D(1425808327.307651)) datetime.datetime(2015, 3, 8, 9, 52, 7, 307651)
So this can be considered as a regression.