2009-02-13 3 views
10

Das ist ernsthaft tödlich für mich. Ich versuche, einen Unix-Timestamp (1236268800, der zu Thu, 05 Mar 2009 16:00:00 GMT entspricht) zu einem Date-Objekt in Flex zu konvertieren.Flex Date() Konstruktor ist falsch konvertieren Unix Zeitstempel argh

var timestamp:Number = 1236268800; 
trace(new Date(timestamp)); 

Output: Wed Jan 14 23:24:28 GMT-0800 1970 

auch versucht, dies:

var timestamp:Number = 1236268800; 
var date:Date = new Date; 
date.time = timestamp; 
trace(date); 

Output: Wed Jan 14 23:24:28 GMT-0800 1970 

eine dieser beiden Methoden funktionieren sollte. Was mache ich hier falsch?

Antwort

21

müssen Sie in Millisekunden konvertieren, multiplizieren Sie diese mit 1000

+0

Dan Sie Regel so schwer. –

4

http://livedocs.adobe.com/flex/2/langref/Date.html#Date()

Wenn Sie ein Argument vom Datentyp Zahl übergeben, wird das Date-Objekt einen Zeitwert zugeordnet basierend auf der Anzahl von Millisekunden seit dem 1. Januar 1970 0: 00: 000 GMT, wie durch das einzige Argument angegeben.

Sie benötigen eine Zahl von 1000.

3

multiplizieren, da sie als Millisekunden analysiert ist, multiplizieren Sie einfach den Epochenwert von 1000:

trace(new Date(1236268800 * 1000)); 
// Thu Mar 5 08:00:00 GMT-0800 2009 
3

In AS3, das Date() Konstruktor nimmt einen Wert in Millisekunden, während Unix-Zeit in Sekunden ist. Versuchen Sie dies:

var timestamp:Number = 1236268800; 
trace(new Date(timestamp * 1000));