2012-01-16 20 views
6

Zaman dilimi ofseti içeren bir ISO8601 tarihim var (aşağıya bakın). Bundan bir Date nesnesi oluşturduğumda, tarih nesnesi saat dilimim (o anda GMT) olarak dönüştürülür ve saat dilimi ofseti 0'a gider. Zaman dilimi ofsetini korumak için Date() yapıcısını almanın bir yolu var mı?javascript date - timezone offset değerini koru

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

alıyorum çıktısı:

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

istediğim çıkışı:

dahili Date object ile
"Tue Jan 17 2012 12:55:00" 
+0

& Google Chrome'da örnek yapıştırın, ben 'sen çıktı istiyorum olsun Sal 17 Ocak 2012 12:55:00 GMT + 0100 (Paris, Madrid) 'hangi tarayıcıyı kullanıyorsunuz? –

+0

@ArnaudF. Yerel saat diliminiz GMT +1 olduğundan şüpheleniyorum. Burada Fort Worth, TX'de Chrome'u alıyorum: 'Sal 17 Ocak 2012 05:55:00 GMT-0600 (Merkezi Standart Saat)'. – DMKing

cevap

8

değil, onlar sadece bildiğiniz gibi Yerel (kullanıcının tarayıcısı ve/veya OS ayarları tarafından tanımlandığı şekilde) ve UTC. Bunu, sınıfın sahip olduğu birçok klonlanmış yöntemden görebilirsiniz (ör. getHours/getUTCHours).

getTimezoneOffset

gerçekten tek saat dilimi bilgisi, ama (benim durumumda veya 6) ve yerel var ve muhtemelen sadece tekrar +0 verecektir:

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

Sen (timezone-js deneyebilirsiniz ya one of its forks), ancak ofset Olson timezone name sadece GMT/UTC bilmek gerekir: kopyalayarak

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