Tengo un Date
objeto ¿Cómo renderizo la title
porción del siguiente fragmento?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
Tengo la porción de "tiempo relativo en palabras" de otra biblioteca.
He intentado lo siguiente:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Pero eso me da:
"2010-4-2T3:19"
javascript
datetime
iso8601
James A. Rosen
fuente
fuente
new Date("xx").toISOString()
produceNaN-NaN-NaNTNaN:NaN:NaN.NZ
La implementación nativa arroja RangeException.Vea el último ejemplo en la página https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
fuente
<abbr title="2010-04-02T14:12:07">
) no tiene zona horaria. Tal vez querían la hora local, lo que tendría sentido para una cadena de tiempo de UI?Casi todos los métodos to-ISO en la web eliminan la información de la zona horaria aplicando una conversión a "Z" ulu time (UTC) antes de generar la cadena. El .toISOString () nativo del navegador también elimina la información de la zona horaria.
Esto descarta información valiosa, ya que el servidor o el destinatario siempre pueden convertir una fecha ISO completa a la hora de Zulu o la zona horaria que requiera, al tiempo que obtienen la información de la zona horaria del remitente.
La mejor solución que he encontrado es usar la biblioteca de JavaScript Moment.js y usar el siguiente código:
Para obtener la hora ISO actual con información de zona horaria y milisegundos
Para obtener la hora ISO de un objeto JavaScript Date nativo con información de zona horaria pero sin milisegundos
Esto se puede combinar con Date.js para obtener funciones como Date.today () cuyo resultado se puede pasar al momento.
Una cadena de fecha con este formato es compatible con JSON y se presta bien para almacenarse en una base de datos. A Python y C # parece gustarles.
fuente
moment(new Date()).format()
. "A partir de la versión 1.5.0, el formato de momento de llamada # sin formato será predeterminado en ... el formato ISO8601YYYY-MM-DDTHH:mm:ssZ
". Doc: desplácese hacia arriba desde momentjs.com/docs/#/displaying/fromnowmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
La pregunta que se hizo fue el formato ISO con precisión reducida. Voila
Suponiendo que se quiere el Z final, de lo contrario, simplemente omítalo.
fuente
Más corto, pero no compatible con Internet Explorer 8 y versiones anteriores:
fuente
Si no necesita admitir IE7, el siguiente es un gran truco conciso:
fuente
toJSON
método de la fecha en su lugar.JSON.stringify
lo está usando debajo de las sábanas de todos modos.JSON
objeto, aunque no en algunos modos de compatibilidad. Ver stackoverflow.com/questions/4715373/….toISOString()
?Por lo general, no quiero mostrar una fecha UTC ya que a los clientes no les gusta hacer la conversión en su cabeza. Para mostrar una fecha ISO local , uso la función:
La función anterior omite la información de desplazamiento de zona horaria (excepto si la hora local es UTC), por lo que utilizo la siguiente función para mostrar el desplazamiento local en una sola ubicación. También puede agregar su salida a los resultados de la función anterior si desea mostrar el desplazamiento cada vez:
toLocalIsoString
usospad
. Si es necesario, funciona como casi cualquier función de pad, pero en aras de la integridad, esto es lo que uso:fuente
Falta un '+' después de la 'T'
Deberías hacerlo.
Para los ceros iniciales, puede usar esto desde aquí :
Usándolo así:
fuente
fuente
El problema con toISOString es que solo da fecha y hora como "Z".
ISO-8601 también define la fecha y hora con la diferencia de zona horaria en horas y minutos, en formas como 2016-07-16T19: 20: 30 + 5: 30 (cuando la zona horaria está por delante UTC) y 2016-07-16T19: 20: 30-01 : 00 (cuando la zona horaria está detrás de UTC).
No creo que sea una buena idea usar otro complemento, moment.js para una tarea tan pequeña, especialmente cuando puede obtenerlo con unas pocas líneas de código.
Una vez que haya compensado la zona horaria en horas y minutos, puede agregar una cadena de fecha y hora.
Escribí una publicación de blog sobre él: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
fuente
Simplemente usaría esta pequeña extensión para
Date
- http://blog.stevenlevithan.com/archives/date-time-formatfuente
Pude llegar por debajo de la salida con muy menos código.
Salida:
fuente
Encontré lo básico sobre Stack Overflow en alguna parte (creo que era parte de otro código de golf de Stack Exchange), y lo mejoré para que también funcione en Internet Explorer 10 o anterior. Es feo, pero hace el trabajo.
fuente
Para extender la gran y concisa respuesta de Sean con algo de azúcar y sintaxis moderna:
Entonces, por ejemplo.
fuente