我在使用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中输入的日期相同吗?我做错了什么?
答案 0 :(得分:38)
Javascript的Date()
以毫秒为参数。 Python使用秒。你必须乘以1,000。
答案 1 :(得分:19)
的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 }});
答案 2 :(得分:12)
Python以秒为单位返回自纪元以来的时间。 Javascript花费的时间以毫秒为单位。将时间乘以1000,然后再将其传递给Date()
,您应该得到预期的结果。
new Date(1072944000.0 * 1000)