2009-02-13 11 views
10

Esto me está matando seriamente. Estoy tratando de convertir una marca de tiempo Unix (1236268800, que equivale a Jue, 05 Mar 2009 16:00:00 GMT) a un objeto Date en Flex.El constructor Flex Date() está convirtiendo mal las marcas de tiempo de Unix argh

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

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

También probamos esto:

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

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

Cualquiera de estos métodos debería funcionar. ¿Qué estoy haciendo mal aquí?

Respuesta

21

usted tiene que convertir a milisegundos, que se multiplican por 1000

+0

Dan usted gobierna tan duro. –

4

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

Si pasa un argumento de tipo de datos Number, el objeto Date se le asigna un valor de tiempo basado en el número de milisegundos desde el 1 de enero de 1970 a las 0: 00: 000 GMT, según lo especificado por el único argumento.

es necesario multiplicar su número por 1000.

3

Ya que es analizado como milisegundos, simplemente multiplicar el valor de la época de 1000:

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

En AS3, el constructor Date() toma un valor en milisegundos, mientras que el tiempo de Unix está en segundos. Pruebe esto:

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