Moment.js — это библиотека для работы с датами и временем в
JavaScript, которая упрощает их создание, форматирование, парсинг и
манипуляции. Основная цель Moment.js — избавить разработчика от
сложностей стандартного объекта Date в JavaScript,
предоставляя удобный и понятный API.
Объекты Moment создаются с помощью функции moment().
Возможны следующие варианты:
const now = moment();
const birthday = moment("1990-05-15", "YYYY-MM-DD");
const date = moment([2026, 4, 22]); // Месяцы начинаются с 0
const dateFromJS = moment(new Date());
Moment.js предоставляет мощный механизм форматирования через метод
format(). Формат задается строкой, где каждая буква
соответствует компоненту даты или времени:
moment().format("YYYY-MM-DD HH:mm:ss"); // 2026-05-22 14:30:45
Основные форматы:
YYYY — полный год (2026)YY — две последние цифры года (26)MM — месяц с ведущим нулем (01–12)M — месяц без ведущего нуля (1–12)DD — день месяца с ведущим нулем (01–31)D — день месяца без ведущего нуля (1–31)HH — часы в 24-часовом формате (00–23)hh — часы в 12-часовом формате (01–12)mm — минуты с ведущим нулем (00–59)ss — секунды с ведущим нулем (00–59)A — AM/PMMoment.js умеет интерпретировать строки различных форматов, превращая их в объекты Moment.
const date1 = moment("22-05-2026", "DD-MM-YYYY");
const date2 = moment("May 22, 2026", "MMMM D, YYYY");
Если формат не указан, Moment пытается определить его автоматически, но это может привести к ошибкам при разных локалях.
Moment.js позволяет легко добавлять или вычитать дни, месяцы, годы и другие единицы времени:
const today = moment();
const nextWeek = today.add(7, "days");
const lastMonth = today.subtract(1, "months");
Поддерживаемые единицы:
years, ymonths, Mweeks, wdays, dhours, hminutes, mseconds, smilliseconds, msMoment.js предлагает удобные методы для сравнения:
isBefore(), isAfter(),
isSame()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
isBetween() — проверяет, находится ли дата между двумя
другими:const start = moment("2026-05-01");
const end = moment("2026-05-31");
console.log(moment("2026-05-15").isBetween(start, end)); // true
Moment.js поддерживает интернационализацию, что позволяет форматировать даты на разных языках:
moment.locale("ru");
console.log(moment().format("LLLL")); // пятница, 22 мая 2026 г., 14:30
Для переключения локали используется метод locale(), а
для восстановления локали по умолчанию —
moment.locale('en').
Относительное время отображается с помощью методов
fromNow() и toNow():
const birthday = moment("1990-05-15");
console.log(birthday.fromNow()); // "36 лет назад"
console.log(moment().to(birthday)); // "через 36 лет"
Можно настроить отображение единиц времени, чтобы получить, например, только дни, часы или минуты.
Moment.js совместим с Moment Timezone для работы с разными часовыми поясами:
const m = moment.tz("2026-05-22 14:30", "Europe/Moscow");
console.log(m.format()); // 2026-05-22T14:30:00+03:00
С помощью методов tz() и utcOffset() можно
переводить дату между зонами и управлять смещением вручную.
moment-range можно работать с интервалами и проверять
пересечения.moment("invalid-date").isValid() позволяет убедиться, что
дата корректна.moment.unix(1621708800).format("YYYY-MM-DD HH:mm:ss");
const jsDate = moment().toDate();
const momentDate = moment(jsDate);
Moment.js остаётся одним из самых популярных инструментов для работы с датами в JavaScript, благодаря своей простоте, гибкости и поддержке широкого спектра операций.