2011-02-16 58 views
24

我在Python和Javascript中使用日期时遇到了困难。将Python从Python转换为Javascript

>>> d = date(2004, 01, 01) 
>>> d 
datetime.date(2004, 1, 1) 
>>> time.mktime(d.timetuple()) 
1072944000.0 

然后,在Javascript(发送过来的数据阿贾克斯):

>>> new Date(1072944000.0) 
Tue Jan 13 1970 02:02:24 GMT-0800 (PST) {} 

我很困惑。 Javascript日期不应该与我在Python中输入的日期相同吗?我究竟做错了什么?

回答

37

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

12

Python正在以秒为单位返回自纪元以来的时间。 JavaScript需要毫秒的时间。将时间乘以1000,然后传递给Date(),您应该得到预期的结果。

new Date(1072944000.0 * 1000) 
17

的Python:

import datetime, time 
d = datetime.datetime.utcnow() 
for_js = int(time.mktime(d.timetuple())) * 1000 

然后在JS:

new Date({{ for_js }}); 

在瓶,你可以这样做:

@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 }});