Ответ 1
Javascript Date()
принимает миллисекунды в качестве аргумента. Python использует секунды. Вы должны умножить на 1000.
Мне сложно работать с датами в Python и Javascript.
>>> d = date(2004, 01, 01)
>>> d
datetime.date(2004, 1, 1)
>>> time.mktime(d.timetuple())
1072944000.0
Затем в Javascript (данные, отправленные через Ajax):
>>> new Date(1072944000.0)
Tue Jan 13 1970 02:02:24 GMT-0800 (PST) {}
Я в замешательстве. Должна ли дата Javascript быть такой же, как та, которую я ввел в Python? Что я делаю неправильно?
Javascript Date()
принимает миллисекунды в качестве аргумента. Python использует секунды. Вы должны умножить на 1000.
Python:
import datetime, time
d = datetime.datetime.utcnow()
for_js = int(time.mktime(d.timetuple())) * 1000
Тогда в JS:
new Date({{ for_js }});
В Flask вы можете сделать:
@app.template_filter('date_to_millis')
def date_to_millis(d):
"""Converts a datetime object to the number of milliseconds since the unix epoch."""
return int(time.mktime(d.timetuple())) * 1000
И затем выполните:
new Date({{ current_user.created|date_to_millis }});
Python возвращает время с момента эпохи в секундах. Javascript занимает время в миллисекундах. Умножьте время на 1000, прежде чем передавать его на Date()
, и вы должны получить ожидаемый результат.
new Date(1072944000.0 * 1000)