Spec-Zone.ru › JavaScript

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.

Спецификации

Specification
ECMAScript® 2027 Language Specification
# sec-date.prototype.gettimezoneoffset

Совместимость с браузерами

Десктопные Мобильные Серверные
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

Смотрите также

  • Date

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API