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)