Domanda

In Python, utilizzando calendar.timegm (), ottengo un risultato a 10 cifre per un timestamp unix. Quando ho messo questo in setTime di javscript function (), si tratta con una data nel 1970. Essa ha bisogno evidentemente un timestamp unix che è di 13 cifre. Come può accadere questo? Sono entrambi conteggio dalla stessa data?

Come posso utilizzare lo stesso timestamp unix tra queste due lingue?

In 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

In Firebug:

>>> var d = new Date(); d.setTime(1247793660); d.toUTCString()
"Thu, 15 Jan 1970 10:36:55 GMT"
È stato utile?

Soluzione

timegm si basa su gmtime () il metodo di Unix, che restituiscono secondi dal 1 Gennaio 1970.

setTime () metodo è millisecondi da quella data. Avrai bisogno di moltiplicare i vostri secondi tempi 1000 a convertire il formato previsto da JavaScript.

Altri suggerimenti

Qui ci sono un paio di metodi che uso Python per convertire da e per javascript / datetime.

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

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

In JavaScript si dovrebbe fare:

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

Si sta forse mescolando secondi-dal-1970 con millisecondi-dal-1970?

Data costruttore lavora con millisecondi, si deve moltiplicare il tempo Python unix del 1000.

var unixTimestampSeg = 1247793660;
var date = new Date(unixTimestampSeg*1000);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top