Для начала работы с библиотекой Moment.js необходимо понимать, как
создаются объекты времени. Основной способ — вызов функции
moment():
const now = moment(); // текущая дата и время
const specificDate = moment("1990-05-15", "YYYY-MM-DD"); // конкретная дата
Важно учитывать, что Moment.js поддерживает несколько форматов ввода:
строки, объекты JavaScript Date, Unix-времена и массивы
чисел [год, месяц, день, час, минута, секунда]. Месяцы
индексируются с нуля, поэтому январь — 0, декабрь —
11.
Для вывода дат и времени используются методы format() и
toString():
console.log(now.format("YYYY-MM-DD")); // 2026-05-21
console.log(now.format("DD/MM/YYYY HH:mm:ss")); // 21/05/2026 14:35:20
Ключевые моменты форматирования:
YYYY — полный год;MM — месяц с ведущим нулём;DD — день месяца с ведущим нулём;HH — часы 24-формата;mm — минуты;ss — секунды.Возраст обычно определяется как разница между текущей датой и датой
рождения. Для этого используется метод diff():
const birthDate = moment("1990-05-15", "YYYY-MM-DD");
const today = moment();
const age = today.diff(birthDate, "years");
Метод diff() принимает три параметра:
"years",
"months", "days", "hours",
"minutes", "seconds".true, если требуется точная разница с дробной частью.const preciseAge = today.diff(birthDate, "years", true); // вернёт возраст с десятичной частью
Для вычисления возраста с точностью до месяцев можно комбинировать методы:
const years = today.diff(birthDate, "years");
const months = today.diff(birthDate.add(years, "years"), "months");
Moment.js предоставляет объект duration для работы с
интервалами времени. Он позволяет складывать, вычитать и форматировать
интервалы:
const duration = moment.duration(2, "years"); // 2 года
const detailedDuration = moment.duration({ years: 1, months: 6, days: 12 });
Методы объекта duration:
asYears(), asMonths(),
asDays() — возвращают длительность в указанных
единицах;years(), months(), days(),
hours(), minutes(), seconds() —
возвращают целое число для каждой компоненты.Пример использования для вычисления разницы между двумя датами:
const start = moment("2020-01-01");
const end = moment("2023-05-21");
const diff = moment.duration(end.diff(start));
console.log(diff.years()); // 3
console.log(diff.months()); // 4
console.log(diff.days()); // 20
Методы add() и subtract() позволяют
изменять дату на определённый интервал:
const date = moment("2026-05-21");
date.add(5, "days"); // прибавить 5 дней
date.subtract(2, "months"); // вычесть 2 месяца
Эти методы поддерживают сложные объекты:
date.add({ years: 1, months: 3, days: 7 });
Чтобы преобразовать объект duration в человекочитаемый
вид, можно использовать комбинацию методов:
const duration = moment.duration({ years: 2, months: 5, days: 12 });
console.log(`${duration.years()} лет, ${duration.months()} месяцев, ${duration.days()} дней`);
Для более компактного отображения можно вычислять общие дни или часы:
console.log(duration.asDays()); // общая длительность в днях
console.log(duration.asHours()); // общая длительность в часах
const birthDate = moment("1990-05-15", "YYYY-MM-DD");
const today = moment();
const age = today.diff(birthDate, "years");
const nextBirthday = birthDate.add(age + 1, "years");
const daysToBirthday = nextBirthday.diff(today, "days");
console.log(`Возраст: ${age} лет`);
console.log(`До следующего дня рождения: ${daysToBirthday} дней`);
const project1 = moment.duration({ months: 6, days: 12 });
const project2 = moment.duration({ months: 4, days: 18 });
const totalDuration = moment.duration(project1).add(project2);
console.log(`Общая длительность: ${totalDuration.years()} лет, ${totalDuration.months()} месяцев, ${totalDuration.days()} дней`);
add(),
subtract(), year(), month()
изменяют оригинальный объект. Для создания нового экземпляра
используется .clone().0,
декабрь — 11. При работе с пользовательским вводом важно
правильно преобразовывать.Эти методы Moment.js позволяют гибко и точно вычислять возраст, длительность и разницу между датами, упрощая работу с временными интервалами в любых приложениях на JavaScript.