Technicznie, jest bardziej poprawna zaklęcie:
Intl.DateTimeFormat().resolvedOptions().timeZone
Niestety, nie wszystkie implementacje aktualnie obsługuje funkcji strefy czasowej Intl
API. Tak więc, chociaż zwróci to prawidłową strefę czasową IANA w Chrome, nie będzie tego robić w FireFox i kilku innych przeglądarkach.
Funkcja kangax Intl compatibility table przedstawia tę funkcję jako podpozycję pod obiektem oznaczonym DateTimeFormat
oznaczonym resolvedOptions().timeZone defaults to the host environment
.
Zobacz następujące elementy robocze Firefox:
- Bug 1158733 - Wykrywanie czasowej systemu z internacjonalizacji Javascript API
- Bug 895737 - DateTimeFormat nie zapisuje aktualną strefę czasową
- Bug 837961 - Dodaj wsparcie dla IANA strefy czasowej nazwy do internacjonalizacji API
W międzyczasie istnieją dwie opłacalne alternatywy s:
- jsTimeZoneDetect - która koncentruje się wyłącznie na zgadywaniu strefy czasowej.
- moment-timezone - która jest dodatkiem do popularnej biblioteki moment.js i zawiera API
moment.tz.guess()
, aby spróbować odgadnąć strefę czasową użytkownika.
Należy pamiętać, że oba te elementy będą wewnętrznie próbowały korzystać z interfejsu API Intl
, jeśli jest on dostępny i działa, zanim spróbują zastosować dodatkowe algorytmy zgadywania.
Należy również pamiętać, że najlepszą praktyką jest nigdy nie polegać wyłącznie na wykrywaniu/zgadywaniu strefy czasowej, ale raczej użyciu go do wyboru rozsądnej wartości domyślnej z kontrolki wyboru strefy czasowej. Zawsze dawaj użytkownikowi sposób na wybranie wybranej strefy czasowej. Jest to ważne, ponieważ strefa czasowa, w której obecnie mają ustawiony komputer, może być strefą czasową, której chcieliby używać w aplikacji. Na przykład w przypadku internetowego oprogramowania do kalendarzy (takiego jak Kalendarz Google lub Outlook.com) użytkownik może ustawić strefę czasową w swoim profilu użytkownika.
jest teraz obsługiwany dla FF na 53.0.3 (64-bit) na komputerze z Ubuntu –