Istniejące odpowiedzi pokażą aktualne przesunięcie strefy czasowej, ale będziesz mieć problemy, jeśli porównasz historyczne/przyszłe punkty w czasie, ponieważ nie będzie to uwzględniało zmian czasu letniego.
W wielu strefach czasowych przesunięcie zmienia się w ciągu roku i zmiany te występują w różnych terminach lub w ogóle nie zależą od szerokości geograficznej. Jeśli masz tylko czas UTC i przesunięcie, nigdy nie możesz być pewny, jakie przesunięcie będzie miało miejsce w tej lokalizacji w różnych innych porach roku.
Na przykład przesunięcie UTC + 2: 00 może odnosić się do Barcelony latem lub Wybrzeża Kości Słoniowej przez cały rok. Przesunięcie 2-godzinne będzie zawsze wyświetlało prawidłowy czas na Wybrzeżu Kości Słoniowej, ale przez pół roku w Barcelonie będzie trwało pół godziny.
W jaki sposób zajmujemy się wszystkimi tymi problemami ze strefami czasowymi? Cóż, to jest całkiem prosta:
- zapisać wszystkie czasy w UTC
- zapisać nazwę strefy czasowej, gdzie to nastąpiło
W JavaScript można użyć Moment strefę czasową guess the users timezone chociaż mam tylko przetestowane w przeglądarce:
moment.tz.guess(); // eg. 'America/Chicago'
następnie można użyć ten ciąg czasowej w Moment Timezone pomóc zrównoważyć przechwyconych razy UTC.
spróbuj tego 'new Date(). GetTimezoneOffset()'. – vkstack
Dzięki. Zadziałało. Ale potrzebowałem go sformatowanego w "gg: mm"; więc użyłem pliku moment.js z 'console.log (''. concat (offset <0?" - ":" + ", moment ('. concat (Math.abs (offset/60), Math.abs (offset % 60) <10? "0": "", Math.abs (przesunięcie% 60)), "hmm"). Format ("HH: mm")); ' – Malith