Python 3 datetime.fromtimestamp завершается с ошибкой в 1 микросекунду
Я хочу сохранить дату и время с микросекундным разрешением как метки времени. Но похоже, что модуль Python 3 datetime потерял одну микросекунду при их загрузке. Чтобы проверить это, давайте создадим скрипт:
test_datetime.py:
from random import randint
from datetime import datetime
now = datetime.now()
for n in range(1000):
d = datetime(year=now.year, month=now.month, day=now.day,
hour=now.hour, minute=now.minute, second=now.second,
microsecond=randint(0,999999))
ts = d.timestamp()
d2 = datetime.fromtimestamp(ts)
assert d == d2, 'failed in pass {}: {} != {}'.format(n, d, d2)
python3 test_datetime.py всегда терпит неудачу на одну микросекунду:
Traceback (most recent call last):
File "test_datetime.py", line 14, in <module>
assert d == d2, 'failed in pass {}: {} != {}'.format(n, d, d2)
AssertionError: failed in pass 4: 2014-07-02 11:51:46.984716 != 2014-07-02 11:51:46.984715
Это поведение должно быть принято? Разве мы не должны полагаться на datetime.fromtimestamp, если мы хотим разрешение в микросекундах?