Текущая дата и время

Библиотека 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() возвращает специальный объект 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

Unix Timestamp

Moment.js умеет работать с Unix-временем.

Получение timestamp в секундах

const timestamp = moment().unix();

console.log(timestamp);

Timestamp в миллисекундах

const milliseconds = moment().valueOf();

console.log(milliseconds);

Работа с часовыми поясами

По умолчанию используется локальное время системы.

UTC-время

const utc = moment().utc();

console.log(utc.format());

Результат:

2026-05-21T09:37:52Z

Локальное время

const local = moment().local();

console.log(local.format());

ISO 8601

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);

Преобразование в объект Date

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

Недостатки Moment.js

Несмотря на популярность, библиотека считается устаревающей.

Основные причины:

  • большой размер библиотеки;
  • изменяемые объекты (mutable objects);
  • снижение производительности по сравнению с современными решениями;
  • переход сообщества на более лёгкие библиотеки.

Современные альтернативы

Библиотека Особенности
Day.js API, похожий на Moment.js
date-fns Функциональный подход
Luxon Современная работа с timezone
Temporal Новый стандарт JavaScript

Тем не менее, Moment.js продолжает активно использоваться в существующих проектах, корпоративных системах и legacy-коде, поэтому понимание работы с текущей датой и временем остаётся важной частью практики JavaScript-разработки.