2012-01-30 19 views
9

Estoy tratando de crear un objeto de fecha a partir de una cadena. me sale fecha en formato ISO, excepto milisegundos parte como "2012-01-30T16: 23: 12"Firefox new Fecha() desde la cadena construye la hora en la zona horaria local

resultados difieren cuando corro siguiente código en Internet Explorer, Chrome y Firefox (Link to Fiddle)

currentDate = "2012-01-30T16:23:12"; 
var date = new Date(currentDate); 
alert(date); 

IE y Chrome consideran la cadena como UTC pero firefox considera en zona horaria local.

¿Hay alguna forma genérica de evitarlo, excepto para verificar el agente de usuario en todas partes?

+0

posible duplicado de [Problema de ajuste de la zona horaria javascript molesto] (http://stackoverflow.com/questions/7629286/annoying-javascript-timezone-adjustment-issue) –

Respuesta

12

Usted podría tratar de anexar la zona horaria traslado de origen +00:00 para UTC:

currentDate = "2012-01-30T16:23:12+00:00"; 

ayuda eso? (Lo siento, no puedo probarlo sin cambiar realmente mi zona horaria).

+0

Gracias. Funciona con "+00: 00". De esta forma, los tres navegadores producen el mismo valor de época. http://jsfiddle.net/harsha/9ybtN/2/ – harsha

+0

Lo siento, sí, necesita los dos puntos –

2

Hm, una posible solución consiste en analizar cadena y utilizar métodos.

setUTCDate()  
setUTCFullYear() 
setUTCHours() 

Probablemente, no hay mejor solución

+2

+1, esto no es una solución, pero la * forma correcta *, ver: http://stackoverflow.com/questions/7629286 –

0

No hay garantía de que la entrada se analizará correctamente si está en el formato actual. La rutina Date.parse() solo es necesaria para analizar cadenas en un formato particular; el análisis de otros formatos depende de la implementación. Si se atreve a confiar en las implementaciones de satisfacer el requisito, añadir datos para ajustarse al formato específico:

new Date(currentDate + '.000Z') 

alternativa, puede utilizar una biblioteca que puede analizar los datos en el formato actual, por ejemplo, jQuery o Globalize.js.

Consideraciones similares se aplican a las fechas de escritura. No se garantiza el formato de salida si usa Date.toString(), explícitamente o como en alert(date). Incluso dentro de una sola computadora, diferentes navegadores utilizarán diferentes formatos localizados.

Cuestiones relacionadas