2009-07-03 4 views
6

In Python, mit calendar.timegm(), bekomme ich ein 10-stelliges Ergebnis für einen Unix-Zeitstempel. Wenn ich dies in die setTime() - Funktion von Javscript einfüge, kommt es 1970 auf ein Datum. Es benötigt offensichtlich einen 13-stelligen Unix-Zeitstempel. Wie kann das passieren? Zählen beide vom selben Datum?Python Unix-Zeit funktioniert nicht in Javascript

Wie kann ich denselben Unix-Zeitstempel zwischen diesen beiden Sprachen verwenden?

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" 
+0

Gibt es einen Grund, warum Sie nicht diese Daten in einem Format außer UTC sind vorbei (http://en.wikipedia.org/wiki/Coordinated_Universal_Time) ? – SingleNegationElimination

Antwort

11

timegm basiert auf Unix 'gmtime() Methode, die Rückkehr Sekunden seit dem 1. Januar 1970.

Javascripts multiplizieren setTime() Methode ist Millisekunden seit diesem Datum. Sie müssen Ihre Sekunden mal 1000 multiplizieren, um in das Format zu konvertieren, das von Javascript erwartet wird.

2

mischen Sie möglicherweise-Sekunden seit 1970 bis mit Millisekunden-seit-1970?

1

JavaScript Date constructor mit Millisekunden arbeitet, sollten Sie die Python Unix-Zeit von 1000.

var unixTimestampSeg = 1247793660; 
var date = new Date(unixTimestampSeg*1000); 
8

Hier sind ein paar Python-Methoden, die ich zu und von Javascript/Datetime zu konvertieren.

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 würden Sie tun:

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