Hinweis moment(date).offsetUtc()
die Zeitdifferenz in Minuten zwischen Browser Zeit und UTC am Tag als Argument bestanden zurückgibt. Ein sollte nicht diesen Unterschied global festgelegt und verwenden Sie es für alle Tage, wenn sie in einem Sommerzone sind:
// this is WRONG in daylight saving zones. don't do this!
const OFFSET_UTC = moment().offsetUtc();
Die oben wird die aktuelle Differenz zu allen Terminen wenden Sie mit und wenn Sie arbeiten, sind in ein Sommerzeitzone Ihre Termine werden in der anderen Jahreshälfte um eine Stunde abweichen.
Eine kleine Funktion, die ich schrieb, die Zeitdifferenz in Sommer Zonen korrekt zu analysieren:
function toUtcMoment(date) {
return moment(date).add(moment(date).offsetUtc(), 'minutes').utc()
}
können Sie die oben verwenden, um richtig stammt aus dem Kalenderwerkzeug übergeben (die immer in Browser Zeitzone) sind in eine Anwendung, die verwendet UTC-Zeitzone.
Dies gibt die * aktuelle * Zeitzone * offset * zurück. Nicht die Zeitzone. Der Offset kann sich beispielsweise aufgrund von Sommerzeit ändern. Siehe "Zeitzone! = Offset" in [dem Zeitzonen-Tag-Wiki] (http://stackoverflow.com/tags/timezone/info) –
@ MattJohnsons Antwort ist die wahre Antwort auf diese Frage. Technisch ist diese Antwort falsch, da sie Offset-bezogen ist, nicht Zeitzonen-bezogen (unterschiedliche Konzepte). – dudewad