Moment.js предоставляет мощные возможности для обработки, форматирования и парсинга дат и времени. Форматы позволяют задавать, как дата или время будут представлены в строковом виде, а также управлять точностью и стилем вывода.
Для преобразования объекта Moment в строку используется метод
format(). В качестве аргумента передается строка формата,
состоящая из специальных токенов, каждый из которых отвечает за
определенный элемент даты или времени.
Примеры ключевых токенов:
Год:
YYYY — полный год, например, 2026YY — две последние цифры года, например, 26Месяц:
MM — месяц с ведущим нулем (01–12)M — месяц без ведущего нуля (1–12)MMM — сокращенное название месяца, например, “Май”MMMM — полное название месяца, например, “Май”День месяца:
DD — день с ведущим нулем (01–31)D — день без ведущего нуля (1–31)День недели:
d — номер дня недели (0–6, где 0 — воскресенье)ddd — сокращенное название дня недели, например,
“Пн”dddd — полное название дня недели, например,
“Понедельник”Часы, минуты и секунды:
HH — часы в 24-часовом формате с ведущим нулем
(00–23)H — часы без ведущего нуля (0–23)hh — часы в 12-часовом формате с ведущим нулем
(01–12)h — часы в 12-часовом формате без ведущего нуля
(1–12)mm — минуты с ведущим нулем (00–59)ss — секунды с ведущим нулем (00–59)a / A — обозначение периода дня (am/pm или
AM/PM)Пример форматирования:
const moment = require('moment');
const now = moment();
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2026-05-21 14:37:45
console.log(now.format('dddd, MMMM D, YYYY')); // Четверг, Май 21, 2026
Moment.js поддерживает локализацию, позволяя отображать даты и
времена на различных языках. Для этого используется метод
locale().
Пример:
moment.locale('ru');
console.log(moment().format('LLLL')); // четверг, 21 мая 2026 г., 14:37
Доступные форматы локализации включают:
L обычно выводит дату в виде
DD.MM.YYYY, а LLLL включает полное название
дня недели, месяца и время.Можно создавать сложные кастомные форматы, комбинируя токены и
текстовые литералы. Текстовые литералы обрамляются квадратными скобками
[], чтобы Moment не пытался интерпретировать их как
токены.
Пример:
console.log(moment().format('[Сегодня] dddd, D [числа, месяц] MMMM [года]'));
// Сегодня четверг, 21 числа, месяц Май года
Moment.js позволяет парсить строки с датами, используя заранее определенный формат. Это гарантирует корректное распознавание значений.
const dateStr = '21-05-2026 14:37';
const parsedDate = moment(dateStr, 'DD-MM-YYYY HH:mm');
console.log(parsedDate.format('YYYY/MM/DD HH:mm')); // 2026/05/21 14:37
Если формат не совпадает со строкой, Moment возвращает некорректный объект, поэтому точное соответствие формата имеет критическое значение.
Moment.js поддерживает стандарт ISO 8601, который широко используется для обмена данными.
2026-05-21T14:37:00Zconst isoDate = moment('2026-05-21T14:37:00Z');
console.log(isoDate.format('YYYY-MM-DD HH:mm:ss')); // 2026-05-21 14:37:00
При работе с форматами важно учитывать часовые пояса. Moment.js
позволяет конвертировать время между зонами, используя расширение
moment-timezone.
Пример:
const momentTz = require('moment-timezone');
const nyTime = momentTz.tz('2026-05-21 14:37', 'America/New_York');
console.log(nyTime.format('YYYY-MM-DD HH:mm')); // 2026-05-21 14:37
locale() и форматы
L, LL, LLL,
LLLL.moment-timezone для работы с часовыми
зонами, чтобы избежать ошибок при конвертации.Такой подход обеспечивает предсказуемое отображение и обработку дат и времени, делая Moment.js удобным инструментом для любой JavaScript-программы, работающей с временными данными.