Установка moment-timezone

moment-timezone — это расширение для библиотеки Moment.js, которое добавляет возможность работы с часовыми поясами. Оно позволяет корректно конвертировать даты и время между различными часовыми зонами, учитывать переходы на летнее и зимнее время, а также использовать актуальные данные о временных смещениях.

Подключение через npm

Для использования moment-timezone в проектах на Node.js рекомендуется установка через менеджер пакетов npm. Команда выглядит следующим образом:

npm install moment-timezone

После установки библиотеку можно подключить в коде:

const moment = require('moment-timezone');

Для проектов с использованием ES-модулей подключение будет следующим:

import moment from 'moment-timezone';

Подключение через CDN

В случае использования moment-timezone в браузере можно подключить библиотеку через CDN. Для этого необходимо добавить тег <script> в HTML-файл:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.43/moment-timezone-with-data.min.js"></script>

Файл moment-timezone-with-data.min.js содержит все необходимые данные о часовых поясах, что упрощает работу без дополнительной настройки.

Установка и обновление данных о часовых поясах

moment-timezone использует базу данных IANA для часовых зон, которая обновляется по мере изменений в законодательстве. Для актуальности данных рекомендуется периодически обновлять пакет:

npm update moment-timezone

Встроенные данные можно проверить и загрузить только необходимые зоны, чтобы уменьшить размер библиотеки. Например, подключение только для США:

const moment = require('moment-timezone/builds/moment-timezone-with-data-1970-2030.min.js');

Интеграция с Moment.js

moment-timezone работает только в связке с Moment.js. После подключения можно создавать объекты даты и времени с учётом временной зоны:

let moscowTime = moment.tz("2026-05-21 12:00", "Europe/Moscow");
console.log(moscowTime.format()); // "2026-05-21T12:00:00+03:00"

Метод .tz() позволяет назначить временную зону, отличную от локальной системы.

Проверка доступных часовых зон

Для работы с зонами можно получить список всех поддерживаемых временных зон:

console.log(moment.tz.names());

С помощью этого метода легко убедиться, что выбранная зона корректно поддерживается библиотекой.

Настройка и оптимизация

Для больших проектов рекомендуется использовать минимальный набор данных о зонах, чтобы уменьшить размер загружаемых скриптов и ускорить работу. Доступны варианты с выборкой зон по диапазону лет, что полезно для серверных приложений с ограничениями по памяти.

Совместимость и версии

moment-timezone поддерживает все версии Moment.js начиная с 2.0.0. Важно следить за совместимостью версий, особенно при обновлении Moment.js, чтобы избежать ошибок при работе с временными зонами.

Проверка корректной установки

После установки и подключения библиотеки можно проверить её работоспособность простым примером:

const now = moment.tz("America/New_York");
console.log(now.format("YYYY-MM-DD HH:mm:ss Z")); // вывод текущего времени в Нью-Йорке

Если библиотека корректно установлена, команда вернёт дату и время с правильным смещением относительно UTC.

Автономная работа

Для проектов, где важно, чтобы данные о временных зонах всегда были доступны локально, используется версия с встроенными данными:

import moment from 'moment-timezone/builds/moment-timezone-with-data.min.js';

Эта сборка не требует подключения к интернету и содержит все зоны и исторические переходы.

Обновления и поддержка

База часовых зон меняется регулярно, поэтому рекомендуется следить за релизами moment-timezone и обновлять библиотеку вместе с обновлением Moment.js. Использование актуальных данных предотвращает ошибки при расчётах времени и планировании событий в разных странах.