Date.prototype.getTimezoneOffset()
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод getTimezoneOffset() экземпляров Date возвращает разницу в минутах между этой датой, рассчитанной в часовом поясе UTC, и той же датой, рассчитанной в местном часовом поясе.
Попробовать
const date1 = new Date("August 19, 1975 23:15:30 GMT+07:00");
const date2 = new Date("August 19, 1975 23:15:30 GMT-02:00");
console.log(date1.getTimezoneOffset());
// Expected output: your local timezone offset in minutes
// (e.g., -120). NOT the timezone offset of the date object.
console.log(date1.getTimezoneOffset() === date2.getTimezoneOffset());
// Expected output: true
Синтаксис
getTimezoneOffset()
Параметры
Нет.
Возвращаемое значение
Число, представляющее разницу в минутах между датой, рассчитанной в часовом поясе UTC, и датой, рассчитанной в местном часовом поясе. Фактический алгоритм местного времени определяется реализацией, и возвращаемое значение может быть равно нулю в средах выполнения без соответствующих данных. Возвращает NaN, если дата недействительна.
Описание
date.getTimezoneOffset() возвращает разницу в минутах между date, рассчитанной в часовом поясе UTC, и датой, рассчитанной в местном часовом поясе, — то есть в часовом поясе хост-системы, в которой используется браузер (если код запущен из Интернета в браузере), или, в противном случае, хост-системы той среды выполнения JavaScript (например, среда Node.js), в которой выполняется код.
Отрицательные и положительные значения
Число минут, возвращаемое getTimezoneOffset(), является положительным, если местный часовой пояс отстает от UTC, и отрицательным, если местный часовой пояс опережает UTC. Например, для UTC+10 будет возвращено -600.
| Текущий часовой пояс | Возвращаемое значение |
|---|---|
| UTC-8 | 480 |
| UTC | 0 |
| UTC+3 | -180 |
Различные результаты в регионах с летним временем (DST)
В регионе, который ежегодно переходит на летнее время (DST) и обратно, по мере изменения date число минут, возвращаемое при вызове getTimezoneOffset(), может быть непостоянным.
Примечание: Поведение getTimezoneOffset() никогда не будет зависеть от времени запуска кода — оно всегда единообразно при работе в одном и том же регионе. Только значение date влияет на результат.
Примечание: Многие страны экспериментировали с тем, чтобы не переводить время дважды в год, и это означало, что DST продолжалось и зимой. Например, в Великобритании DST действовало с 2:00 18 февраля 1968 года до 3:00 31 октября 1971 года, поэтому зимой часы не переводились назад.
В большинстве реализаций база данных часовых поясов IANA (tzdata) используется для точного определения смещения местного часового пояса в момент date. Однако, если такая информация недоступна, реализация может вернуть ноль.
Примеры
Использование getTimezoneOffset()
// Create a Date instance for the current time
const currentLocalDate = new Date();
// Create a Date instance for 03:24 GMT-0200 on May 1st in 2016
const laborDay2016at0324GMTminus2 = new Date("2016-05-01T03:24:00-02:00");
currentLocalDate.getTimezoneOffset() ===
laborDay2016at0324GMTminus2.getTimezoneOffset();
// true, always, in any timezone that doesn't annually shift in and out of DST
// false, sometimes, in any timezone that annually shifts in and out of DST
getTimezoneOffset() и DST
В регионах, где используется DST, возвращаемое значение может меняться в зависимости от времени года, в котором находится date. Ниже приведен результат работы в среде выполнения в Нью-Йорке, где часовой пояс — UTC-05:00.
const nyOffsetSummer = new Date("2022-02-01").getTimezoneOffset(); // 300
const nyOffsetWinter = new Date("2022-08-01").getTimezoneOffset(); // 240
getTimezoneOffset() и исторические данные
По историческим причинам часовой пояс, в котором находится регион, может постоянно меняться, даже без учета DST. Например, ниже приведен результат работы в среде выполнения в Шанхае, где часовой пояс — UTC+08:00.
const shModernOffset = new Date("2022-01-27").getTimezoneOffset(); // -480
const shHistoricalOffset = new Date("1943-01-27").getTimezoneOffset(); // -540
Это связано с тем, что во время Японо-китайской войны, когда Шанхай находился под контролем Японии, часовой пояс был изменен на UTC+09:00, чтобы соответствовать японскому (по сути, это было «круглогодичное летнее время»), и это было зафиксировано в базе данных IANA.
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
getTimezoneOffset |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset