Witajcie. Mam problem z obiektem Date w JavaScripcie. Mianowicie - pobieram dane pogodowe ajaxem z Open Weather Map. Nie mogę poradzić sobie z poprawnym pobieraniem godzin, między innymi na potrzeby sunrise oraz sunset. Dla uproszczenia, omówię dokładniej problem na przykładzie.
- API zwraca wartość dla wschodu słońca: sunrise = 2016-08-28T0321 - słońce wstaje o godzinie 3:42 czasu UTC 0,tj. o 5:42 czasu UTC +2, czyli naszego czasu letniego.
- Zamieniam wartość sunrise na obiekt Date: sunriseDateObj = new Date(sunrise);
- Metodą getHours() wyciągam z obiektu daty godzinę. W tym momencie następuje rozbieżność. sunriseDateObj.getHours(); zwraca wartość 5 w Chrome i Operze czyli automatycznie podmienia wartość na nasz czas letni UTC +2. W Mozilli zwraca wartość 3, czyli nie podmienia jej i pozostaje w UTC 0.
- Chcąc rozwiązać problem zamiast metody getHours() użyłem na obiekcie daty metody getUTCHours(), a kolejno chciałem dopasować godzinę do strefy czasowej usera metodą getTimezoneOffset();. W Chrome i Operze zwracana godzina jest faktycznie zgodna z czasem UTC 0, czyli przyjmuje wartość 3. W Mozilli zwracana wartość jest błędna, ponieważ przeglądarka zwraca tym razem liczbę 1, czyli jakby cofnęła strefę czasową do UTC -2.
Przepraszam, jeśli opis jest chaotyczny. Starałem się jak najdokładniej przedstawić problem. Dostęp do plików pod linkiem https://github.com/borecki/weather_app
Po odpaleniu strony w Chromie bądź Operze godzina wschodu i zachodu słońca jest wyświetlana poprawnie. W Mozilli jest 2 godziny do tyłu. Ktoś jest w stanie pomóc i podpowiedzieć jak zapanować nad tym czasem? Z góry dziękuje za pomoc.