Часовые пояса и UTC
Корректно обрабатывайте UTC и местное время.
«Часовые пояса и UTC» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 4 уроков всего.
Местное время и UTC
Дата хранит один абсолютный момент времени, но прочитать его можно в местном времени или в UTC — глобальном эталонном времени. Методы получения доступны в обоих вариантах.
const d = new Date(Date.UTC(2024, 0, 15, 12, 0, 0))
console.log(d.getUTCHours())Методы получения в UTC
Методы с префиксом UTC, такие как getUTCFullYear и getUTCHours, считывают компоненты даты в зоне UTC независимо от устройства.
const d = new Date(Date.UTC(2024, 5, 15, 8, 30, 0))
console.log(d.getUTCFullYear())
console.log(d.getUTCHours())
console.log(d.getUTCMinutes())getTimezoneOffset
getTimezoneOffset возвращает разницу между местным временем и UTC в минутах. Положительное значение означает, что местное время отстаёт от UTC.
const d = new Date()
const offset = d.getTimezoneOffset()
console.log(typeof offset)Знак смещения
Знак смещения противоположен тому, что многие ожидают: часовой пояс, опережающий UTC, даёт отрицательное смещение. Переведите минуты в часы, разделив их на 60.
const offsetMinutes = 120
const hours = offsetMinutes / 60
console.log(hours)Создание дат в UTC
Date.UTC принимает те же аргументы компонентов, что и конструктор, но интерпретирует их как UTC и возвращает метку времени, которую можно передать в new Date.
const ts = Date.UTC(2024, 0, 1, 0, 0, 0)
const d = new Date(ts)
console.log(d.getUTCHours())Методы установки в UTC
Методы установки, такие как setUTCHours, изменяют дату в зоне UTC, подобно методам установки местного времени, но с привязкой к UTC.
const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
d.setUTCHours(15)
console.log(d.getUTCHours())Буква Z в строках ISO
Конечная буква Z в строке ISO означает, что время указано в UTC, который также называют зулусским временем. Строки без неё могут интерпретироваться как местное время.
const d = new Date("2024-01-15T10:00:00Z")
console.log(d.getUTCHours())Один момент, разные представления
Методы получения местного времени и UTC описывают один и тот же момент в разных часовых поясах, поэтому значения часов могут отличаться на величину смещения.
const d = new Date(Date.UTC(2024, 0, 1, 12, 0, 0))
console.log(d.getUTCHours())Хранение в UTC
Распространённая рекомендация — хранить все даты в UTC и преобразовывать их в местное время только при отображении. Это устраняет неоднозначность между регионами.
const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
console.log(d.toISOString())Указание часового пояса
Методы форматирования принимают параметр timeZone, поэтому момент времени можно явно представить в выбранном часовом поясе, например в UTC.
const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
const text = d.toLocaleString("en-US", { timeZone: "UTC" })
console.log(typeof text)Как избежать ошибок
Смешивание методов местного времени и UTC для одной даты приводит к трудноуловимым ошибкам. Выберите одну модель для каждого вычисления и придерживайтесь её последовательно.
const d = new Date(Date.UTC(2024, 0, 1, 0, 0, 0))
console.log(d.getUTCFullYear())
console.log(d.getUTCMonth())Быстрая проверка
Проверьте свои знания о часовых поясах.
Итоги
Итоги: Последовательно считывайте и записывайте даты в местном времени или в UTC.
- Методы получения и установки UTC работают в глобальной зоне
- getTimezoneOffset возвращает минуты, знак инвертирован
- Суффикс Z отмечает строку ISO как значение UTC
- Храните данные в UTC, а отображайте в местном времени
const d = new Date(Date.UTC(2024, 0, 1, 12, 0, 0))
console.log(d.getUTCHours())Часто задаваемые вопросы
Урок «Часовые пояса и UTC» бесплатный?
Да — полный текст урока «Часовые пояса и UTC» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Часовые пояса и UTC»?
Корректно обрабатывайте UTC и местное время. Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Часовые пояса и UTC»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Создание и чтение дат
- Метки времени и вычисления с датами
- Форматирование дат
- Часовые пояса и UTC