2012-01-16 16 views
6

Tengo una fecha ISO8601 que contiene un desplazamiento de zona horaria (consulte a continuación). Cuando creo un objeto Date a partir de esto, el objeto date se convierte a mi zona horaria (actualmente GMT), y el desplazamiento de la zona horaria va a 0. ¿Hay alguna forma de conseguir que el constructor Date() preserve la compensación de la zona horaria?javascript date - preserve offset de zona horaria

var date = new Date("2012-01-17T12:55:00.000+01:00"); 
    console.log(date.toString()); 

La salida que recibo es:

"Tue Jan 17 2012 11:55:00 GMT+0000 (GMT)" 

La salida que quiero es:

"Tue Jan 17 2012 12:55:00" 
+0

al copiar y pegar su ejemplo en Google Chrome, me da la salida que desea ' Martes 17 de enero 2012 12:55:00 GMT + 0100 (París, Madrid) ', ¿qué navegador usas? –

+0

@ArnaudF. Sospecho que es porque tu zona horaria local es GMT +1. Aquí en Fort Worth, TX, en Chrome, recibo: 'Mar 17 de enero de 2012, 05:55:00 GMT-0600 (Hora estándar central)'. – DMKing

Respuesta

8

No con el incorporado en Date object, ya que sólo están al tanto de Local (según lo definido por el navegador del usuario y/o la configuración del sistema operativo) y UTC. Puede ver esto a partir de los muchos métodos clonados que tiene la clase (por ejemplo, getHours/getUTCHours).

getTimezoneOffset es la única información zona horaria que realmente tiene, pero es locales así y probablemente sólo se dará +0 de nuevo (o 6 en mi caso):

var date = new Date("2012-01-17T12:55:00.000+01:00"); 
console.log(date.getTimezoneOffset()/60.0); 

Usted puede tratar timezone-js (o one of its forks), pero necesitará saber el Olson timezone name no sólo el GMT/UTC desplazamiento:

var date = new new timezoneJS.Date('2012-01-17T12:55:00.000+01:00', 'Europe/Brussels'); 
alert(date.getTimezoneOffset()/60.0); // +1 
Cuestiones relacionadas