Saltar al contenido

Analizando la fecha ISO 8601 en Javascript

Solución:

El objeto Date maneja 8601 como su primer parámetro:

var d = new Date("2014-04-07T13:58:10.104Z");
console.log(d.toString());

datejs podría analizar lo siguiente, es posible que desee probar.

Date.parse('1997-07-16T19:20:15')           // ISO 8601 Formats
Date.parse('1997-07-16T19:20:30+01:00')     // ISO 8601 with Timezone offset

Editar: Versión regex

x = "2011-01-28T19:30:00EST"

MM = ["January", "February","March","April","May","June","July","August","September","October","November", "December"]

xx = x.replace(
    /(d{4})-(d{2})-(d{2})T(d{2}):(d{2}):d{2}(w{3})/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$2-1]+" "+$3+", "+$1+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6
    }
)

Resultado

January 28, 2011 - 7:30PM EST

Edición 2: Cambié mi zona horaria a EST y ahora lo seguí

x = "2011-01-28T19:30:00-05:00"

MM = {Jan:"January", Feb:"February", Mar:"March", Apr:"April", May:"May", Jun:"June", Jul:"July", Aug:"August", Sep:"September", Oct:"October", Nov:"November", Dec:"December"}

xx = String(new Date(x)).replace(
    /w{3} (w{3}) (d{2}) (d{4}) (d{2}):(d{2}):[^(]+(([A-Z]{3}))/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$1]+" "+$2+", "+$3+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6 
    }
)

regreso

January 28, 2011 - 7:30PM EST

Básicamente

String(new Date(x))

regreso

Fri Jan 28 2011 19:30:00 GMT-0500 (EST)

regex partes simplemente convirtiendo la cadena anterior al formato requerido.

January 28, 2011 - 7:30PM EST

Si desea que sea simple, esto debería ser suficiente:

function parseIsoDatetime(dtstr) {
    var dt = dtstr.split(/[: T-]/).map(parseFloat);
    return new Date(dt[0], dt[1] - 1, dt[2], dt[3] || 0, dt[4] || 0, dt[5] || 0, 0);
}

Nota parseFloat es imprescindible, parseInt no siempre funciona. El mapa requiere IE9 o posterior.

Funciona para formatos:

  • 2014-12-28 15:30:30
  • 2014-12-28T15: 30: 30
  • 2014-12-28

No es válido para zonas horarias, consulte otras respuestas sobre ellas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *