Moment.js — это библиотека для работы с датами и временем в JavaScript, которая упрощает их создание, форматирование, парсинг и вычисления. Для использования в Node.js необходимо установить библиотеку через npm:
npm install moment
После установки подключение производится стандартным способом:
const moment = require('moment');
Важный момент: библиотека является модульной и поддерживает подключение локализаций, что позволяет работать с датами на разных языках.
Создание текущей даты и времени:
const now = moment();
console.log(now.format()); // Например: 2026-05-22T14:35:20+03:00
Создание даты из строки или формата:
const dateFromString = moment("2026-05-22", "YYYY-MM-DD");
Создание даты из отдельных компонентов:
const dateFromComponents = moment({ year: 2026, month: 4, day: 22, hour: 14, minute: 30 });
// Обратите внимание: месяц нумеруется с 0 (0 — январь, 11 — декабрь)
Создание даты из Unix timestamp:
const dateFromTimestamp = moment.unix(1685000000);
Метод format() позволяет выводить дату в различных
форматах:
moment().format('YYYY-MM-DD'); // 2026-05-22
moment().format('DD/MM/YYYY'); // 22/05/2026
moment().format('dddd, MMMM Do YYYY, h:mm:ss a'); // Friday, May 22nd 2026, 2:35:20 pm
Основные символы форматирования:
YYYY — полный годYY — две последние цифры годаMM — месяц (01–12)DD — день месяца (01–31)dddd — название дня неделиHH — часы в 24-часовом форматеhh — часы в 12-часовом форматеmm — минутыss — секундыa — am/pmMoment.js предоставляет методы для сложных вычислений с датами.
Добавление и вычитание времени:
const date = moment();
date.add(7, 'days'); // Добавить 7 дней
date.subtract(3, 'months'); // Вычесть 3 месяца
Поддерживаются единицы: years, months,
weeks, days, hours,
minutes, seconds.
Установка конкретных компонентов даты:
const date = moment();
date.year(2025).month(0).date(15); // 15 января 2025
Получение отдельных компонентов:
const date = moment();
console.log(date.year()); // 2026
console.log(date.month()); // 4 (май)
console.log(date.date()); // 22
console.log(date.day()); // 5 (пятница, день недели от 0 до 6)
Moment.js поддерживает локализации для корректного отображения дней недели и месяцев.
require('moment/locale/ru');
moment.locale('ru');
console.log(moment().format('LLLL')); // пятница, 22 мая 2026 г., 14:35
Сравнение двух дат:
const date1 = moment('2026-05-22');
const date2 = moment('2026-06-01');
console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2)); // false
Проверка диапазонов:
const start = moment('2026-05-01');
const end = moment('2026-05-31');
const date = moment('2026-05-22');
console.log(date.isBetween(start, end)); // true
Метод diff() возвращает разницу между двумя датами:
const start = moment('2026-05-01');
const end = moment('2026-05-22');
console.log(end.diff(start, 'days')); // 21
console.log(end.diff(start, 'weeks')); // 3
Можно использовать duration для работы с периодами
времени:
const duration = moment.duration(end.diff(start));
console.log(duration.asDays()); // 21
console.log(duration.asHours()); // 504
Работа с UTC:
const utcDate = moment.utc('2026-05-22T12:00:00Z');
console.log(utcDate.local().format()); // конвертация в локальное время
Парсинг ISO строк:
const isoDate = moment("2026-05-22T14:35:00+03:00");
console.log(isoDate.format('YYYY-MM-DD HH:mm:ss')); // 2026-05-22 14:35:00
Манипуляция с календарными датами:
console.log(moment().add(1, 'month').calendar()); // Следующий месяц
Отображение относительных времен:
const date = moment().subtract(3, 'days');
console.log(date.fromNow()); // 3 дня назад
Работа с цепочкой методов:
Moment.js позволяет комбинировать операции:
const date = moment()
.add(1, 'week')
.subtract(2, 'days')
.hour(9)
.minute(30);
console.log(date.format()); // Например: 2026-05-27T09:30:00+03:00
Moment.js продолжает оставаться мощным инструментом для работы с датами в Node.js, упрощая любые манипуляции, форматирование и сравнения времени. Его богатый API и поддержка локализации делают его удобным решением для серверной разработки.