Moment.js предоставляет мощный и удобный инструмент для работы с датами и временем в JavaScript. Одной из ключевых возможностей является получение и манипуляции с текущей датой и временем.
Для получения текущей даты используется простое создание объекта
moment() без параметров:
const now = moment();
console.log(now.format()); // Вывод в формате ISO 8601
Особенности:
.format(),
который принимает строку с шаблоном для кастомного вывода.Moment.js поддерживает гибкое форматирование с использованием шаблонов:
const now = moment();
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2026-05-22 15:30:45
console.log(now.format('dddd, MMMM Do YYYY, h:mm:ss a')); // Понедельник, Май 22-й 2026, 3:30:45 pm
Ключевые моменты форматирования:
YYYY – год в 4 цифрыMM – месяц с ведущим нулемDD – день месяца с ведущим нулемHH – часы в 24-часовом форматеhh – часы в 12-часовом форматеmm – минутыss – секундыa – am/pmdddd – полное название дня неделиMMMM – полное название месяцаDo – день месяца с суффиксом (1st, 2nd и т.д.)Moment.js позволяет изменять текущую дату, добавлять или вычитать дни, месяцы, годы и другие единицы времени:
const now = moment();
const nextWeek = now.clone().add(7, 'days');
const lastMonth = now.clone().subtract(1, 'months');
console.log(nextWeek.format('YYYY-MM-DD'));
console.log(lastMonth.format('YYYY-MM-DD'));
Важные моменты:
.clone() создает копию объекта, чтобы не изменять
исходный момент..add() и .subtract() поддерживают единицы:
'years', 'months', 'weeks',
'days', 'hours', 'minutes',
'seconds'.Для сравнения дат используются методы .isBefore(),
.isAfter() и .isSame():
const now = moment();
const future = moment().add(5, 'days');
console.log(now.isBefore(future)); // true
console.log(now.isAfter(future)); // false
console.log(now.isSame(future)); // false
Можно также проверять только по определённым единицам:
console.log(now.isSame(future, 'month')); // true, если оба в одном месяце
Moment.js поддерживает работу с временными зонами через Moment Timezone. Для текущей даты в UTC используется:
const nowUtc = moment.utc();
console.log(nowUtc.format()); // 2026-05-22T12:30:45Z
Для локальной временной зоны:
const nowLocal = moment().local();
console.log(nowLocal.format());
Особенности:
moment.utc() создает дату в UTC.moment().local() преобразует объект UTC в локальную
временную зону.Moment.js позволяет легко извлекать отдельные части даты:
const now = moment();
console.log(now.year()); // 2026
console.log(now.month()); // 4 (месяцы считаются с 0)
console.log(now.date()); // 22
console.log(now.day()); // 4 (день недели, 0 – воскресенье)
console.log(now.hour()); // 15
console.log(now.minute()); // 30
console.log(now.second()); // 45
Особенности нумерации:
Для получения текущей даты в виде Unix timestamp используется метод
.unix():
const now = moment();
console.log(now.unix()); // 1737253845
Для получения в миллисекундах:
console.log(now.valueOf()); // 1737253845000
Moment.js не обновляет объект автоматически. Для получения
актуального времени требуется создание нового объекта
moment():
setInterval(() => {
const now = moment();
console.log(now.format('HH:mm:ss'));
}, 1000);
Этот подход используется для создания часов в реальном времени или таймеров.
Moment.js упрощает работу с датами по сравнению с объектом
Date:
Все это делает Moment.js удобным инструментом для получения и манипуляций с текущей датой и временем в любых приложениях на JavaScript.