2009-07-28 7 views
5

Próbuję porównać przesunięcie czasu GMT z systemu operacyjnego do przesunięcia czasu GMT z Date.getTimezoneOffset() Javascript. Problem polega na tym, że okno daje przesunięcie w oparciu o EST, podczas gdy javascript daje przesunięcie oparte na EDT. Między tymi dwoma jest różnica godzin. Czy ktoś wie, jak zrobić JavaScript używać standardowych czasów jak Windows? Dziękuję Ci.Javascript's Date.getTimezoneOffset()

+0

W jaki sposób odzyskujesz offset z systemu operacyjnego? – Rojo

Odpowiedz

4

Dlaczego nie zadzwonić getTimezoneOffset w dniu, w którym wiesz, że czas letni nie obowiązuje?

javascript:alert(new Date('1/1/2009').getTimezoneOffset()) 

To da 300 (5 godzin).

+0

Dzięki za pomoc! – SquidScareMe

+0

To nie działa w FireFox. –

12

Pamiętaj, że pierwsza wysłana odpowiedź działa tylko w połowie wszystkich przypadków, więc nie działa wcale.

Pierwszy stycznia jest znany z tego, że nie jest to czas letni tylko na półkuli północnej. Jednak to tylko połowa świata.

var jan = new Date(2009, 0, 1, 2, 0, 0), jul = new Date(2009, 6, 1, 2, 0, 0); 
var offset = (jan.getTime() % 24 * 60 * 60 * 1000) > 
      (jul.getTime() % 24 * 60 * 60 * 1000) 
      ?jan.getTimezoneOffset() : jul.getTimezoneOffset(); 
+2

Nie dlatego, że wyobcowanie jakiejkolwiek grupy jest w porządku, ale zauważ, że północna "połowa świata" stanowi 90% światowej populacji. – hyperslug

+1

@hyperslug - jeśli SquidScareMe działa tylko po rozwiązaniu na półkuli północnej, jest to dla niego odpowiednie. Jednak SO * powinno * dostarczyć * najlepsze * rozwiązanie, a rozwiązanie Steffena jest technicznie poprawniejsze (najlepszy rodzaj poprawnego!). – Andrew

+0

Aby to działało, najpierw otrzymuję bieżący miesiąc, a następnie zmieniam go tam, gdzie widzisz 6 (Jul). – MPaulo

Powiązane problemy