2010-08-25 27 views
10

estoy trabajando con fechas en RSS, pero estoy encontrando diferentes resultados cuando se utiliza el código de abajo en el IE, Chrome y Firefox:Problema con formatos de fecha en JavaScript con diferentes navegadores

new Date('2001-01-01T12:00:00Z') 

Firefox es feliz con eso, pero Chrome e IE devuelven la fecha no válida.

pensé que iba a tratar la sustitución de la T y Z de la siguiente manera:

new Date('2001-01-01 12:00:00') 

Esta vez Chrome es feliz con eso, pero Firefox e IE regresar fecha no válida.

¿Alguna idea de qué debería hacer para obtener un objeto de fecha en todos los navegadores con este formato?

Muchas gracias, Tim

Respuesta

23

Esto funciona en todos los navegadores en mi caja - probarlo en la consola:

alert(new Date('2001/01/31 12:00:00')) 

por lo

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' ')) 

IE8, FF3.6, Safari4, Chrome

+1

Tienes razón, esto funciona, y es una solución mejor que la mía. – NicolasT

+0

¡Muchas gracias! ¡Probado y trabajando para mí en IE, FF, Chrome y Opera! – TimS

+0

¿Cómo puedo hacer que esto funcione en FF con la zona horaria? Porque esta 'nueva Fecha ('2001-01-01T12: 00: 00 + 1000'.replace (/ \ -/g,' \/'). Replace (/ [T | Z]/g,' '))' devolver Fecha inválida en FF, pero funciona en IE/Chrome –

1

Se puede tratar:

new Date(2001,0,1,12,0,0) 

Esto significa:

new Date(year,month,day,hour,minutes,seconds) 
+3

Usted quiere decir new Date (2001,0,1,12,0,0) desde JS meses comienzan con 0 – mplungjan

+0

Voy a editar, tienes razón – NicolasT

+0

tener cuidado con 0s principales. 08 y 09 son números octales no válidos – mplungjan

3

También podría tratar de usar Date.js - una fuente abierta Javascript biblioteca de manipulación de la fecha.

+0

Excelente sugerencia! Gracias – TimS

+0

También momentjs (www.momentjs.com) elimina las discrepancias del navegador. – Quango

3

Esto funciona en todos los principales 5 navegadores y hace que todos los navegadores de reconocer el tiempo que GMT/UTC en lugar de la hora local (el sufijo Z significa el tiempo es UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0')) 

Doy gracias mplungjan por su respuesta.

Cuestiones relacionadas