2016-11-03 10 views

Odpowiedz

5

var timedifference = new Data(). GetTimezoneOffset();

Powoduje zmianę różnicy w strefie czasowej klientów od czasu UTC. Możesz wtedy grać z nim tak, jak chcesz.

+11

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) –

+1

@ 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

48

Podczas korzystania moment.js, użyj:

var tz = moment.tz.guess(); 

To zwróci identyfikator strefy czasowej IANA, takich jak America/Los_Angeles dla strefy czasowej US Pacific.

To jest .

+0

Zobacz także [ta odpowiedź] (http://stackoverflow.com/a/16526897/634824) i [ta odpowiedź] (http://stackoverflow.com/a/18252251/634824). –

+1

Świetna odpowiedź - wznowione! Proszę również użyć 'momet-timezone' wersji ** 0.5.4 ** lub wyższej ... proszę śledzić ten wątek dla dalszych wyjaśnień https://github.com/moment/moment-timezone/issues/324 – ymz

+0

+1. Upewnij się, że używasz chwili i używasz haka tz. https://momentjs.com/timezone/docs/ na zainstalowanie go za pomocą node.js użyj tego polecenia 'npm install moment-timezone' następnie wymagało tego w taki sposób' window.moment = require ('moment-timezone'); ' –

0

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.

Powiązane problemy