2012-10-12 204 views
20

Quiero usar el plugin jQuery timeago - http://timeago.yarp.com/Convertir marca de tiempo Unix a la norma ISO 8601

tengo marcas de tiempo como este 1331209044000 y los docs decir que necesito una marca de tiempo ISO 8601.

Para ser honesto, nunca he oído hablar de la norma ISO 8601.

¿Cómo puedo convertir?

Saludos

+0

Consulte http://en.wikipedia.org/wiki/ISO_8601 para obtener más información sobre el estándar. Me temo que simplemente tiene que construir una cadena basada en los componentes 'Fecha'. – Jacob

+2

Esto parece prometedor: http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript – Aeoril

Respuesta

41

Asumiendo que su marca de tiempo es en milisegundos (o se puede convertir fácilmente a milisegundos), entonces usted puede utilizar el Date constructor y la date.toISOString() method.

var s = new Date(1331209044000).toISOString(); 
s; // => "2012-03-08T12:17:24.000Z" 

si orienta los navegadores antiguos que no soportan EMCAScript 5ª edición, puede utilizar las estrategias mencionadas en esta pregunta: How do I output an ISO 8601 formatted string in JavaScript?

+0

Esto es ECMAScript 5 - Consulte aquí para la compatibilidad y el retroceso código: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString – Aeoril

+1

No olvide que esa marca de tiempo de Unix está en segundos, pero Javascript cuenta en milisegundos. Entonces, en realidad es 'new Date (timestamp * 1000) .toISOString();'. –

0

La solución i utilizada, gracias a los enlaces proporcionados

// convert to ISO 8601 timestamp 
function ISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n} 
    return d.getUTCFullYear()+'-' 
     + pad(d.getUTCMonth()+1)+'-' 
     + pad(d.getUTCDate())+'T' 
     + pad(d.getUTCHours())+':' 
     + pad(d.getUTCMinutes())+':' 
     + pad(d.getUTCSeconds())+'Z' 
} 

var d = new Date(parseInt(date)); 
console.log(ISODateString(d)); 
+1

Por supuesto, esta función asume que la fecha está realmente en la zona horaria Zulú (GMT + 0). – maerics

Cuestiones relacionadas