В библиотеке Moment.js работа с временем построена вокруг объекта
moment(), который предоставляет единый интерфейс для
извлечения и изменения временных компонентов. Доступ к часам, минутам,
секундам и миллисекундам реализован через набор одноимённых
методов-геттеров и сеттеров, работающих в локальной или UTC-зоне.
Часы извлекаются методом hour():
moment().hour()
Возвращаемое значение находится в диапазоне от 0 до
23, где 0 соответствует полуночи, а
23 — последнему часу суток.
Пример:
const m = moment('2026-05-21 14:35:10');
m.hour(); // 14
Метод также выполняет роль сеттера при передаче аргумента:
m.hour(9);
m.format('YYYY-MM-DD HH:mm:ss'); // 2026-05-21 09:35:10
Изменение часов не затрагивает остальные компоненты даты, если не происходит переход через границы суток.
Минуты извлекаются методом minute():
moment().minute()
Диапазон значений — от 0 до 59.
Пример получения:
const m = moment('2026-05-21 14:35:10');
m.minute(); // 35
Пример установки:
m.minute(10);
m.format('HH:mm:ss'); // 14:10:10
При выходе за пределы допустимого диапазона происходит нормализация времени с изменением часов.
const m = moment('2026-05-21 14:50:00');
m.minute(75);
m.format('HH:mm:ss'); // 15:15:00
Секунды доступны через метод second():
moment().second()
Значения варьируются от 0 до 59.
Пример:
const m = moment('2026-05-21 14:35:10');
m.second(); // 10
Установка значения:
m.second(45);
m.format('HH:mm:ss'); // 14:35:45
Как и в случае с минутами, выход за пределы диапазона приводит к перерасчёту времени:
m.second(70);
m.format('HH:mm:ss'); // 14:36:10
Миллисекунды извлекаются методом millisecond():
moment().millisecond()
Диапазон значений — от 0 до 999.
Пример:
const m = moment('2026-05-21 14:35:10.250');
m.millisecond(); // 250
Установка значения:
m.millisecond(900);
m.format('HH:mm:ss.SSS'); // 14:35:10.900
Переполнение миллисекунд также нормализуется:
m.millisecond(1200);
m.format('HH:mm:ss.SSS'); // 14:35:11.200
Для работы в координированном универсальном времени используется
метод utc():
moment.utc()
Все методы доступа к компонентам времени сохраняются и ведут себя аналогично локальному времени:
const m = moment.utc('2026-05-21 14:35:10');
m.hour(); // часы в UTC
m.minute(); // минуты в UTC
m.second(); // секунды в UTC
m.millisecond();// миллисекунды в UTC
Установка значений также применяется в пределах UTC-контекста:
m.hour(12).minute(0).second(0);
m.format(); // дата в UTC с обновлённым временем
Методы hour, minute, second,
millisecond поддерживают цепочку вызовов, так как каждый
сеттер возвращает изменённый объект:
const m = moment();
m.hour(8)
.minute(30)
.second(15)
.millisecond(500);
m.format('HH:mm:ss.SSS');
Такой подход используется для последовательной нормализации временных компонентов без промежуточных переменных.
Часто требуется получить сразу несколько частей времени из одного объекта:
const m = moment('2026-05-21 14:35:10.250');
const time = {
hours: m.hour(),
minutes: m.minute(),
seconds: m.second(),
milliseconds: m.millisecond()
};
Подобная структура используется при подготовке данных для интерфейсов, логирования и временных вычислений.
Все методы изменения времени в Moment.js обладают общей моделью нормализации:
Пример с отрицательными значениями:
const m = moment('2026-05-21 10:00:00');
m.minute(-30);
m.format('HH:mm:ss'); // 09:30:00
Извлечённые значения часто используются совместно с
format():
const m = moment('2026-05-21 14:05:09.007');
m.format('HH:mm:ss'); // 14:05:09
m.format('HH:mm:ss.SSS'); // 14:05:09.007
Форматирование не влияет на исходный объект, а лишь преобразует его представление.
Полученные компоненты времени применяются для построения логики интервалов:
const start = moment('2026-05-21 08:00:00');
const end = moment('2026-05-21 12:30:00');
const diffMinutes =
(end.hour() * 60 + end.minute()) -
(start.hour() * 60 + start.minute());
Такой подход позволяет работать с отдельными частями времени без преобразования в timestamp.
Изменение часов, минут и секунд может приводить к переходу между датами:
const m = moment('2026-05-21 23:50:00');
m.minute(20);
m.format('YYYY-MM-DD HH:mm:ss'); // 2026-05-22 00:20:00
Пересчёт выполняется автоматически с корректировкой даты, что сохраняет целостность временной шкалы.