将日期从Python转换为Javascript

Nic*_*ner 29 javascript python date

我在使用Python和Javascript中的日期时遇到了困难.

>>> d = date(2004, 01, 01)
>>> d
datetime.date(2004, 1, 1)
>>> time.mktime(d.timetuple())
1072944000.0
Run Code Online (Sandbox Code Playgroud)

然后,在Javascript(通过Ajax发送的数据)中:

>>> new Date(1072944000.0)
Tue Jan 13 1970 02:02:24 GMT-0800 (PST) {}
Run Code Online (Sandbox Code Playgroud)

我糊涂了.Javascript日期不应该与我在Python中输入的日期相同吗?我究竟做错了什么?

nmi*_*els 39

Javascript Date()以毫秒为参数.Python使用秒.你必须乘以1,000.


phi*_*reo 20

蟒蛇:

import datetime, time
d = datetime.datetime.utcnow()
for_js = int(time.mktime(d.timetuple())) * 1000
Run Code Online (Sandbox Code Playgroud)

然后在JS中:

new Date({{ for_js }});
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

然后做:

new Date({{ current_user.created|date_to_millis }});
Run Code Online (Sandbox Code Playgroud)


mar*_*cog 12

Python以秒为单位返回自纪元以来的时间.Javascript花费时间以毫秒为单位.在传递之前将时间乘以1000 Date(),您应该得到预期的结果.

new Date(1072944000.0 * 1000)
Run Code Online (Sandbox Code Playgroud)