Временная метка JavaScript для преобразования даты и времени Python

Чтобы получить метку времени в JavaScript, мы используем

var ts = new Date().getTime()

Каким образом можно преобразовать его в Python datetime до сих пор я использую следующий код

>>> jsts = 1335205804950
>>> dt = datetime.datetime.fromtimestamp(jsts/1000)
>>> dt
datetime.datetime(2012, 4, 24, 0, 30, 4)

Я делю метку на 1000, потому что получаю ошибку, например

ValueError                                Traceback (most recent call last)
1 d = datetime.datetime.fromtimestamp(a)
ValueError: year is out of range

Sultan.

Ответ 1

Ваш текущий метод верен, деление на 1000 необходимо, потому что ваш JavaScript возвращает метку времени в миллисекундах, а datetime.datetime.fromtimestamp() ожидает отметку времени в секундах.

Чтобы сохранить миллисекундную точность, вы можете разделить на 1000.0, так что вы используете float-деление вместо целочисленного деления:

>>> dt = datetime.datetime.fromtimestamp(jsts/1000.0)
>>> dt
datetime.datetime(2012, 4, 23, 11, 30, 4, 950000)

Ответ 2

Как вы это делаете, это правильный путь, потому что js включает миллисекунды в дату/время. Насколько я знаю, Python (и PHP), нет. Для большей точности вы можете использовать /1000.0.

Ответ 3

Для других пользователей все еще возникают ошибки: у меня была аналогичная проблема, но временная метка unix была в микросекундах, т.е. мне пришлось делить метку времени на 1000000, чтобы получить правильный результат.

dt = datetime.datetime.fromtimestamp(1502360499615921)