Временная метка 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)