Библиотека Moment.js предоставляет удобный API для работы с датами и
временем. Основная точка входа — функция moment(),
создающая объект, содержащий текущие дату и время.
const now = moment();
console.log(now);
При вызове без аргументов объект создаётся на основе системного времени устройства или сервера.
Для получения текущей даты используется метод
format().
const today = moment().format('YYYY-MM-DD');
console.log(today);
Результат:
2026-05-21
| Токен | Описание | Пример |
|---|---|---|
| YYYY | Год | 2026 |
| MM | Месяц | 05 |
| DD | День месяца | 21 |
const currentTime = moment().format('HH:mm:ss');
console.log(currentTime);
Результат:
14:37:52
| Токен | Значение |
|---|---|
| HH | Часы в формате 24h |
| hh | Часы в формате 12h |
| mm | Минуты |
| ss | Секунды |
| A | AM / PM |
Пример:
console.log(moment().format('hh:mm A'));
Результат:
02:37 PM
const dateTime = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dateTime);
Результат:
2026-05-21 14:37:52
Функция moment() возвращает специальный объект Moment,
содержащий множество методов для работы со временем.
const now = moment();
console.log(typeof now);
Результат:
object
console.log(now.isValid());
Результат:
true
const year = moment().year();
console.log(year);
const month = moment().month();
console.log(month);
Важно учитывать, что месяцы нумеруются с нуля:
| Значение | Месяц |
|---|---|
| 0 | Январь |
| 1 | Февраль |
| 2 | Март |
Для привычного отображения обычно добавляют единицу:
const month = moment().month() + 1;
const day = moment().date();
console.log(day);
const weekday = moment().day();
console.log(weekday);
| Значение | День недели |
|---|---|
| 0 | Воскресенье |
| 1 | Понедельник |
| 6 | Суббота |
const hours = moment().hours();
const minutes = moment().minutes();
const seconds = moment().seconds();
Метод format() является одним из самых используемых в
библиотеке.
moment().format('DD.MM.YYYY');
Результат:
21.05.2026
| Формат | Результат |
|---|---|
DD.MM.YYYY |
21.05.2026 |
MM/DD/YYYY |
05/21/2026 |
YYYY-MM-DD |
2026-05-21 |
HH:mm |
14:37 |
HH:mm:ss |
14:37:52 |
dddd |
Thursday |
MMMM |
May |
Moment.js поддерживает локализацию дат.
moment.locale('ru');
После установки локали названия месяцев и дней недели отображаются на русском языке.
console.log(moment().format('dddd'));
Результат:
четверг
moment.locale('ru');
const fullDate = moment().format('D MMMM YYYY, HH:mm');
console.log(fullDate);
Результат:
21 мая 2026, 14:37
Moment.js умеет работать с Unix-временем.
const timestamp = moment().unix();
console.log(timestamp);
const milliseconds = moment().valueOf();
console.log(milliseconds);
По умолчанию используется локальное время системы.
const utc = moment().utc();
console.log(utc.format());
Результат:
2026-05-21T09:37:52Z
const local = moment().local();
console.log(local.format());
Moment.js поддерживает международный стандарт ISO 8601.
console.log(moment().toISOString());
Пример результата:
2026-05-21T14:37:52.000Z
const now = moment();
const future = moment('2027-01-01');
console.log(now.isBefore(future));
const past = moment('2020-01-01');
console.log(moment().isAfter(past));
const start = moment('2026-01-01');
const end = moment();
const days = end.diff(start, 'days');
console.log(days);
Moment.js умеет отображать время в человекочитаемом виде.
const postDate = moment().subtract(3, 'hours');
console.log(postDate.fromNow());
Результат:
3 hours ago
После подключения русской локали:
moment.locale('ru');
console.log(postDate.fromNow());
Результат:
3 часа назад
const startOfDay = moment().startOf('day');
console.log(startOfDay.format());
const endOfDay = moment().endOf('day');
console.log(endOfDay.format());
const startOfMonth = moment().startOf('month');
const endOfYear = moment().endOf('year');
const tomorrow = moment().add(1, 'day');
console.log(tomorrow.format('DD.MM.YYYY'));
const yesterday = moment().subtract(1, 'day');
console.log(yesterday.format('DD.MM.YYYY'));
Moment.js активно использует chaining.
const result = moment()
.add(2, 'days')
.subtract(3, 'hours')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss');
console.log(result);
Moment можно преобразовать в стандартный объект JavaScript.
const jsDate = moment().toDate();
console.log(jsDate);
const arr = moment().toArray();
console.log(arr);
Результат:
[
2026,
4,
21,
14,
37,
52,
123
]
| Индекс | Значение |
|---|---|
| 0 | Год |
| 1 | Месяц |
| 2 | День |
| 3 | Часы |
| 4 | Минуты |
| 5 | Секунды |
| 6 | Миллисекунды |
const obj = moment().toObject();
console.log(obj);
Результат:
{
years: 2026,
months: 4,
date: 21,
hours: 14,
minutes: 37,
seconds: 52,
milliseconds: 123
}
console.log(moment().isSame(moment(), 'day'));
console.log(moment().isSame(moment(), 'month'));
console.log(moment().isSame(moment(), 'year'));
setInterval(() => {
const time = moment().format('HH:mm:ss');
console.log(time);
}, 1000);
const hour = moment().hour();
if (hour < 12) {
console.log('Доброе утро');
} else if (hour < 18) {
console.log('Добрый день');
} else {
console.log('Добрый вечер');
}
const day = moment().day();
const isWeekend = day === 0 || day === 6;
console.log(isWeekend);
const now = moment();
const end = moment().endOf('day');
const hoursLeft = end.diff(now, 'hours');
console.log(hoursLeft);
calendar()Метод отображает дату относительно текущего момента.
moment.locale('ru');
console.log(moment().calendar());
Возможный результат:
Сегодня в 14:37
Несмотря на популярность, библиотека считается устаревающей.
Основные причины:
| Библиотека | Особенности |
|---|---|
| Day.js | API, похожий на Moment.js |
| date-fns | Функциональный подход |
| Luxon | Современная работа с timezone |
| Temporal | Новый стандарт JavaScript |
Тем не менее, Moment.js продолжает активно использоваться в существующих проектах, корпоративных системах и legacy-коде, поэтому понимание работы с текущей датой и временем остаётся важной частью практики JavaScript-разработки.