0Pricing
JavaScript Academy · Урок

Часовые пояса и 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 — локальная установка не требуется.

Все уроки этого курса

  1. Создание и чтение дат
  2. Метки времени и вычисления с датами
  3. Форматирование дат
  4. Часовые пояса и UTC
← Назад к JavaScript Academy