Дата Javascript работает не так, как вы ожидаете. Но ваш код Python правильный.
Согласно списку времени эпохи, время эпохи на 1 января 2010 г. должно быть
1262304000
Python: (кажется, правильно)
>>> (datetime(2010,1,1) - datetime(1970,1,1)).total_seconds()
1262304000.0
Javascript (кажется неверным)
> new Date(2010,1,1).getTime()
1265011200000
or
> new Date(2010,1,1).getTime()/1000
1265011200
Это связано с тем, что дата Javascript не создает дату так, как вы ожидаете. Во-первых, он создает дату в вашем текущем часовом поясе, а не в UTC. Таким образом, «получить текущее время» в javascript будет временем клиента, тогда как python вернет время utc. Также обратите внимание, что в JS Date есть ошибка, из-за которой месяц на самом деле основан на 0, а не на 1.
> new Date(2010,1,1,0,0,0,0)
Date 2010-02-01T08:00:00.000Z
> new Date(2010,0,1,0,0,0,0)
Date 2010-01-01T08:00:00.000Z
Javascript может создать дату из эпохи:
> new Date(1262304000000)
Date 2010-01-01T00:00:00.000Z
Что правильно.
В качестве альтернативы вы можете использовать следующую функцию JS для получения более точного времени обратите внимание, что месяц по-прежнему начинается с 0, а не с 1
> Date.UTC(2010,0,1)
1262304000000
person
Nick Humrich
schedule
18.07.2014
time.time()
делает то же самое. Кроме того, если вам нужно общее количество секунд, почему вы умножаете на 1000? Я не думал, чтоtotal_seconds()
возвращает миллисекунды. - person TheSoundDefense   schedule 18.07.2014time.time()
не делают одно и то же; эта функция возвращает смещение от эпохи для данного объектаdatetime
, тогда какtime.time()
дает вам только текущую метку времени. - person Martijn Pieters   schedule 18.07.2014