2011-02-16 21 views
24

Tengo dificultades para trabajar con las fechas en Python y Javascript.Convertir la fecha de Python a Javascript

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

Luego, en Javascript (datos enviados a través de Ajax):

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

estoy confundido. ¿No debería la fecha de Javascript ser la misma que ingresé en Python? ¿Qué estoy haciendo mal?

Respuesta

37

Javascript Date() toma milisegundos como argumento. Python usa segundos. Tienes que multiplicar por 1,000.

12

Python regresa el tiempo transcurrido desde la época en segundos. Javascript toma el tiempo en milisegundos. Multiplique el tiempo por 1000 antes de pasarlo a Date() y debe obtener el resultado esperado.

new Date(1072944000.0 * 1000) 
17

Python:

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

Luego, en JS:

new Date({{ for_js }}); 

En Frasco que puede hacer:

@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 

y luego hacer:

new Date({{ current_user.created|date_to_millis }}); 
Cuestiones relacionadas