Uwaga moment(date).offsetUtc()
zwraca różnicę czasu w minutach między czasem UTC i przeglądarki na bieżąco przekazywane jako argument. Jeden NIE należy ustawić tę różnicę globalnie i użyć go do wszystkich dat, jeżeli są one w strefie letni:
// this is WRONG in daylight saving zones. don't do this!
const OFFSET_UTC = moment().offsetUtc();
Powyższy będzie zastosować bieżącą różnicę do wszystkich dat, z którymi pracujesz, a jeśli jesteś w strefa czasu letniego, daty zostaną wyłączone o jedną godzinę, jeśli znajdują się w drugiej połowie roku.
Mała funkcja pisałem przeanalizować różnicę czasową w strefach letni poprawnie:
function toUtcMoment(date) {
return moment(date).add(moment(date).offsetUtc(), 'minutes').utc()
}
można użyć wyżej prawidłowo przechodzić pochodzi z datepickers (które są zawsze w strefie czasowej przeglądarki) do aplikacji, które używa strefy czasowej UTC.
Powoduje zwrócenie * bieżącej * strefy czasowej * przesunięcia *. Nie strefa czasowa. Przesunięcie może się zmienić w zależności od czasu letniego. Zobacz "Strefa czasowa! = Przesunięcie" w [wiki tagu strefy czasowej] (http://stackoverflow.com/tags/timezone/info) –
@ Odpowiedź MattJohnsona jest prawdziwą odpowiedzią na to pytanie. Technicznie ta odpowiedź jest niepoprawna, ponieważ jest związana z przesunięciem, a nie ze strefą czasową (różne koncepcje). – dudewad