Pregunta

En Python, utilizando calendar.timegm (), que obtiene un resultado de 10 dígitos para una marca de tiempo Unix. Cuando puse esto en setTime de javscript función (), se trata con una fecha en 1970. Es evidente que necesita una marca de tiempo UNIX que es de 13 dígitos de longitud. ¿Cómo puede suceder esto? Son ambos contados a partir de la misma fecha?

¿Cómo puedo utilizar la misma marca de tiempo Unix entre estos dos idiomas?

En Python:

In [60]: parseddate.utctimetuple()
Out[60]: (2009, 7, 17, 1, 21, 0, 4, 198, 0)
In [61]: calendar.timegm(parseddate.utctimetuple())
Out[61]: 1247793660

En Firebug:

>>> var d = new Date(); d.setTime(1247793660); d.toUTCString()
"Thu, 15 Jan 1970 10:36:55 GMT"
¿Fue útil?

Solución

timegm se basa en gmtime () método de Unix, que devuelven segundos desde 1 jan de 1970.

Javascripts setTime () método es milisegundos desde esa fecha. Tendrá que multiplicar sus segundos tiempos 1000 para convertir al formato esperado por JavaScript.

Otros consejos

Aquí hay un par de métodos de pitón que utilizo para convertir ay desde javascript / fecha y hora.

def to_datetime(js_timestamp):
    return  datetime.datetime.fromtimestamp(js_timestamp/1000)

def js_timestamp_from_datetime(dt):
    return 1000 * time.mktime(dt.timetuple())

En el javascript puede hacer:

var dt = new Date();
dt.setTime(js_timestamp);

¿Está posiblemente mezclar segundos-Since 1970 con milisegundos-Since 1970?

Fecha constructor trabaja con milisegundos, se debe multiplicar el tiempo Python UNIX 1000.

var unixTimestampSeg = 1247793660;
var date = new Date(unixTimestampSeg*1000);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top