Dopóki masz zainicjowany moment-timezone z the data for the zones you want Twój kod działa zgodnie z oczekiwaniami.
Poprawnie przeliczasz moment na strefę czasową, co jest odzwierciedlone w drugim wierszu pliku wyjściowego z momentObj.format()
.
Przełączenie na UTC nie tylko usuwa przesunięcie, lecz także zmienia strefę czasową UTC. Jeśli masz zamiar to zrobić, w ogóle nie potrzebujesz oryginalnego połączenia .tz()
. Możesz po prostu zrobić moment.utc()
.
Być może próbujesz zmienić ciąg formatu wyjściowego? Jeżeli tak, wystarczy określić parametry chcesz sposobu format
:
momentObj.format("YYYY-MM-DD HH:mm:ss")
chodzi o ostatnie linie kodu - gdy wrócisz do Date
obiektu przy użyciu toDate()
, dajesz się zachowanie chwili. js i powrót do zachowania JavaScript. Obiekt JavaScript Date
będzie zawsze drukowany w lokalnej strefie czasowej komputera, na którym działa. Nie ma nic, co mógłby zrobić skrypt instant.js.
Kilka innych drobnych rzeczy:
Chociaż chwila konstruktor może wziąć Date
, to zazwyczaj najlepiej nie używać jednego. W przypadku "teraz" nie używaj moment(new Date())
. Zamiast tego po prostu użyj moment()
. Oba będą działać, ale będą niepotrzebnie zbędne. Jeśli parsujesz z łańcucha, przekazuj ten ciąg bezpośrednio do momentu. Nie próbuj najpierw analizować tego jako Date
. Parser momentu jest o wiele bardziej niezawodny.
Strefy czasowe takie jak MST7MDT
są ze względów kompatybilności wstecznej. Wynikają one ze stref czasowych w stylu POSIX, a tylko kilka z nich znajduje się w danych TZDB. Jeśli nie jest to absolutnie konieczne, należy użyć klucza, takiego jak America/Denver
.
Co wyjście oczekujesz i co wyjście otrzymujesz? –
4 rząd dostać mnie, więc wyjście:
(Date object) Time with offset Thu Aug 01 2013 15:23:49 GMT+0300 (Финляндия (лето))
Ale strefa czasowa musi być MST7MDT –