Moment.js — это популярная библиотека для работы с датами и временем в JavaScript. Она упрощает создание, форматирование, парсинг и манипуляцию датами, устраняя сложности, связанные с объектом Date
в стандартном JavaScript.
Установка Moment.js
Через npm или yarn
npm install moment
yarn add moment
Подключение через CDN
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment.min.js"></script>
После подключения библиотека будет доступна через объект moment
.
Создание даты
Текущая дата и время
const now = moment();
console.log(now.format()); // '2024-03-07T12:00:00+00:00' (примерный вывод)
Создание даты из строки
const date = moment('2024-02-15', 'YYYY-MM-DD');
console.log(date.format()); // '2024-02-15T00:00:00+00:00'
Создание даты из объекта Date
const dateFromJS = moment(new Date());
console.log(dateFromJS.format('YYYY-MM-DD HH:mm:ss'));
Форматирование дат
Основные форматы
const now = moment();
console.log(now.format('YYYY-MM-DD')); // 2024-03-07
console.log(now.format('DD/MM/YYYY')); // 07/03/2024
console.log(now.format('MMMM Do YYYY, h:mm:ss a')); // March 7th 2024, 12:00:00 pm
Форматирование с днями недели
console.log(now.format('dddd, MMMM Do YYYY')); // Thursday, March 7th 2024
Работа с датами
Добавление и вычитание времени
const futureDate = moment().add(7, 'days');
console.log(futureDate.format('YYYY-MM-DD')); // Дата через 7 дней
const pastDate = moment().subtract(1, 'month');
console.log(pastDate.format('YYYY-MM-DD')); // Дата месяц назад
Разница между датами
const start = moment('2024-01-01', 'YYYY-MM-DD');
const end = moment('2024-03-01', 'YYYY-MM-DD');
console.log(end.diff(start, 'days')); // 60
console.log(end.diff(start, 'months')); // 2
Парсинг и проверка дат
Проверка корректности даты
console.log(moment('2024-02-30', 'YYYY-MM-DD', true).isValid()); // false
console.log(moment('2024-02-28', 'YYYY-MM-DD', true).isValid()); // true
Проверка, является ли дата текущей
console.log(moment().isSame(moment(), 'day')); // true
Проверка, находится ли дата в прошлом или будущем
console.log(moment('2023-12-31').isBefore(moment())); // true (прошедшая дата)
console.log(moment('2025-01-01').isAfter(moment())); // true (будущая дата)
Локализация дат
Moment.js поддерживает локализацию дат на разные языки.
Установка локали
moment.locale('ru');
console.log(moment().format('LLLL')); // четверг, 7 марта 2024 г., 12:00
Возвращение к английской локали
moment.locale('en');
console.log(moment().format('LLLL')); // Thursday, March 7, 2024 12:00 PM
Альтернатива Moment.js
Moment.js устарел и больше не развивается, поэтому для работы с датами рекомендуются более современные библиотеки:
- Day.js — легковесная альтернатива Moment.js с аналогичным API.
- date-fns — современный инструмент с модульным подходом.
- Luxon — библиотека от создателей Moment.js с поддержкой часовых поясов.