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, если мы хотим разрешение в микросекундах?

Ответы на вопрос(2)

Ваш ответ на вопрос