JS метод Date.getTimezoneOffset()


Загальний опис

Date.prototype.getTimezoneOffset() — це метод у JavaScript, призначений для отримання зміщення часової зони в хвилинах між місцевим часом та Універсальним координованим часом (UTC). Цей метод відіграє ключову роль у розробці веб-застосунків, де правильне відображення часу відповідно до місцевого часу користувача є критично важливим.

Метод Date.prototype.getTimezoneOffset() не приймає жодних аргументів і повертає зміщення часу у хвилинах. Він корисний, коли треба конвертувати місцевий час у UTC або навпаки, а також для визначення місцевого часу користувача. Основні сфери застосування включають, але не обмежуються, обробкою часу і дати у туристичних сервісах, геолокаційних службах та в інших сценаріях, де важливий контекст часової зони.

Подивимося на практичний приклад:

let date = new Date();
let offset = date.getTimezoneOffset();
console.log(offset);

У випадку, коли ви запустите цей код в Україні (яка, до речі, має UTC+2 години), результатом буде "-120". Це означає, що поточна часова зона на 120 хвилин випереджає UTC.

Важливо зазначити, що getTimezoneOffset() є частиною прототипу Date, а отже, доступний для всіх екземплярів об'єкта Date. Крім того, цей метод часто використовується в поєднанні з іншими методами Date, щоб забезпечити повну адаптацію часу до потреб користувача.

Наприклад, якщо ви хочете конвертувати часову мітку UTC в локальний час:

let utcDate = new Date(Date.UTC(2023, 0, 1)); // 1 січня 2023 року в UTC
let offset = utcDate.getTimezoneOffset();
let localDate = new Date(utcDate.setMinutes(utcDate.getMinutes() - offset));
console.log(localDate);

Цей код конвертує часову мітку UTC в місцевий час, враховуючи часовий зсув.

автор: Bond

Порада

Якщо ви використовуєте getTimezoneOffset() з метою врахування літнього часу, будьте обережні. Деякі країни можуть змінювати свої правила щодо літнього часу, тому завжди перевіряйте актуальність інформації.

автор: Bond
Порада

Якщо вам легше сприймати часовий зсув у годинах, а не в хвилинах, просто поділіть результат getTimezoneOffset() на 60:

let offsetInHours = date.getTimezoneOffset() / 60;
автор: Bond
Нотатка

Позитивне значення результату вказує на те, що місцевий час відстає від UTC, а негативне – випереджає.

автор: Bond
Нотатка

При використанні Date.prototype.getTimezoneOffset() необхідно пам'ятати, що він повертає зсув у хвилинах, який потрібно відняти від UTC, щоб отримати місцевий час. Наприклад, якщо метод поверне "-120", це означає, що ваша часова зона випереджає UTC на 2 години.

let date = new Date();
let offset = date.getTimezoneOffset();
let localHour = date.getUTCHours() - (offset / 60);
автор: Bond

Синтаксис

getTimezoneOffset()

Повернення

integer

Повертає різницю в хвилинах між місцевим часом та часом UTC (Універсальним координованим часом). Якщо місцевий час передує UTC, результат буде негативним.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
1 1 1 3 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад демонструє роботу методу Date.prototype.getTimezoneOffset(). Коли користувач натискає на кнопку "Отримати часовий зсув", відображається часова зона користувача відносно UTC у годинах.

автор: Bond

В цьому прикладі ми створюємо новий об'єкт дати за допомогою Date(). Далі, за допомогою методу getTimezoneOffset(), отримуємо місцевий часовий зсув від UTC у хвилинах. Потім переводимо цей зсув у години. Наостанок, виводимо результат у форматі UTC, враховуючи додатковий або від'ємний зсув відносно UTC.

// Створюємо новий об'єкт дати
let currentDate = new Date();

// Отримуємо часовий зсув у хвилинах
let offset = currentDate.getTimezoneOffset();

// Переводимо зсув у години
let offsetInHours = offset / 60;

// Виводимо місцеву часову зону у форматі UTC
if (offsetInHours < 0) {
    console.log(`UTC+{Math.abs(offsetInHours)}`);
} else {
    console.log(`UTC-{offsetInHours}`);
}
автор: Bond

У цьому прикладі ми визначаємо час у форматі UTC. Далі за допомогою методу getTimezoneOffset() отримуємо часовий зсув від UTC у хвилинах. Переводячи цей зсув у години, ми можемо додати його до нашого UTC часу, щоб отримати місцевий час. На завершення ми виводимо отриманий місцевий час.

// Задаємо час у форматі UTC
let utcHour = 14; // 14:00 у форматі UTC

// Отримуємо часовий зсув у хвилинах за допомогою методу getTimezoneOffset
let offset = new Date().getTimezoneOffset();

// Переводимо зсув у години та додаємо до UTC часу
let localHour = utcHour - (offset / 60);

// Виводимо місцевий час
console.log(`Місцевий час: {localHour}:00`);
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід