2012-04-23 2 views
30

Per ottenere timestamp in JavaScript usiamoJavaScript timestamp a Python conversione datetime

var ts = new Date().getTime() 

Qual è il modo corretto di convertirlo in un Python datetime finora ho utilizzare il seguente codice

>>> jsts = 1335205804950 
>>> dt = datetime.datetime.fromtimestamp(jsts/1000) 
>>> dt 
datetime.datetime(2012, 4, 24, 0, 30, 4) 

I divide il timestamp di 1000 perché ottengo un errore come

ValueError        Traceback (most recent call last) 
1 d = datetime.datetime.fromtimestamp(a) 
ValueError: year is out of range 

Sultan.

risposta

48

Il metodo corrente è corretto, la divisione per 1000 è necessaria perché il tuo JavaScript restituisce il timestamp in millisecondi e datetime.datetime.fromtimestamp() prevede un timestamp in secondi.

Per mantenere la precisione millisecondo si può dividere per 1000.0, quindi si utilizza divisione pescante, invece di divisione intera:

>>> dt = datetime.datetime.fromtimestamp(jsts/1000.0) 
>>> dt 
datetime.datetime(2012, 4, 23, 11, 30, 4, 950000) 
+1

Per fortuna, questo non è necessario in Python 3. – delnan

+0

Grazie a @ F.J :). – sultan

+0

@delnan Ho lo stesso problema in python3: 'datetime.fromtimestamp (1485373592240)' fallisce a meno che diviso per '1000' – jjj

1

Il modo di farlo è il modo corretto, perché js include millisecondi in data /tempo. Python (e PHP) per quanto ne so, no. Per maggiore precisione è possibile utilizzare /1000.0.

0

Per gli altri ancora un errore: ho avuto un problema simile ma il timestamp di Unix era in microsecondi, cioè ho dovuto dividere il timestamp di 1000000 per ottenere il risultato corretto.

dt = datetime.datetime.fromtimestamp(1502360499615921)