¿Cómo convierto una marca de tiempo de Unix a ISO 8601 en JavaScript?

2 minutos de lectura

Avatar de usuario de Vince Lowe
vince lowe

Tengo una marca de tiempo como esta 1331209044000 y quiero convertirlo a una marca de tiempo ISO 8601. ¿Cómo puedo convertirlo usando JavaScript?

Uso el complemento jQuery “timeago” – http://timeago.yarp.com/

  • Ver es.wikipedia.org/wiki/ISO_8601 para obtener más información sobre el estándar. Me temo que simplemente tienes que construir una cadena basada en el Date componentes

    – jacob

    12/10/2012 a las 22:55

  • Esto parece prometedor: stackoverflow.com/questions/2573521/…

    – Xitalogía

    12/10/2012 a las 23:07

avatar de usuario de maerics
maéricos

Suponiendo que su marca de tiempo está en milisegundos (o puede convertir a milisegundos fácilmente), entonces puede usar el Date constructor y el date.toISOString() método.

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

Si se dirige a navegadores más antiguos que no son compatibles con EMCAScript 5.ª edición, puede utilizar las estrategias enumeradas en esta pregunta: ¿Cómo puedo generar una cadena con formato ISO 8601 en JavaScript?

  • Este es ECMAScript 5. Consulte aquí la compatibilidad y el código alternativo: desarrollador.mozilla.org/en-US/docs/JavaScript/Reference/…

    – Xitalogía

    12/10/2012 a las 23:09

  • No olvide que la marca de tiempo de Unix está en segundos, pero Javascript cuenta en milisegundos. Así que en realidad es new Date(timestamp * 1000).toISOString();.

    – Josef Kufner

    16/09/2015 a las 23:43

  • Este comentario es para mí en el futuro: ¡TIENE QUE ESTAR EN MILISEGUNDOS!

    – Tom Smykowski

    9 de septiembre de 2020 a las 12:06

La solución que utilicé, 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));

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

    – maéricos

    9 oct 2014 a las 14:37

¿Ha sido útil esta solución?