Quiero convertir la cadena de fecha a Date
javascript, use este código:
var date = new Date('2013-02-27T17:00:00');
alert(date);
'2013-02-27T17:00:00'
es la hora UTC en el objeto JSON del servidor.
Pero el resultado del código anterior es diferente entre Firefox y Chrome:
Firefox regresa:
Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)
Chrome regresa:
Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time)
Es diferente 1 día, el resultado correcto que esperaría es el resultado de Chrome.
Código de demostración: http://jsfiddle.net/xHtqa/2/
¿Cómo puedo solucionar este problema para obtener el mismo resultado de ambos?
javascript
date
timezone
cuongle
fuente
fuente
Date {Wed Feb 27 2013 17:00:00 GMT+0000 (GMT)}
para mí en ambos (Linux).Respuestas:
El formato correcto para UTC sería
2013-02-27T17:00:00Z
(Z es para Zulu Time). AgregueZ
si no está presente para obtener la cadena de fecha y hora UTC correcta.fuente
Sí, desafortunadamente, los algoritmos de análisis de fechas dependen de la implementación. De la especificación de
Date.parse
(que es utilizada pornew Date
):Para hacer que el
Date
constructor no (quizás) use la zona horaria local, use una cadena de fecha y hora con información de la zona horaria, por ejemplo"2013-02-27T17:00:00Z"
. Sin embargo, es difícil encontrar un formato que sea analizado de manera confiable por todos los navegadores: IE <8 no reconoce el formato ISO (consulte JavaScript: Qué navegadores admiten el análisis de la cadena de fecha ISO-8601 con Date.parse ). Mejor, use una marca de tiempo de Unix, es decir, milisegundos desde la época de Unix , o use una expresión regular para dividir la cadena en sus partes y luego alimentarlasDate.UTC
.fuente
Encontré una cosa aquí. Parece que la Consola del Inspector de Firefox nativa podría tener un error: si ejecuto "new Date ()" en el Inspector nativo, muestra una fecha con zona horaria incorrecta, configuración regional GMT, pero ejecutando el mismo comando en la Consola de extensión de Firebug, la fecha que se muestra utiliza mi zona horaria correcta (GMT-3: 00).
fuente
Intente usar moment.js. Va muy bien y de forma similar con todos los navegadores. viene con muchas opciones de formato. use moment ('date'). format ("") en lugar de New Date ('date')
fuente
Noté que FireFox no estaba devolviendo el mismo resultado que Chrome. Parece que el formato que usa en kendo.toString para la fecha marca la diferencia.
El último resultado de la consola es lo que necesitaba:
fuente