Токены для дня недели

Форматирование дня недели в Moment.js основано на наборе токенов, которые определяют способ отображения значения: от числового индекса до полного локализованного названия. Эти токены используются внутри метода format() и тесно связаны с локализацией, поскольку итоговое значение зависит от текущего языка и настроек региона.


Базовые токены дня недели

d — числовой день недели (0–6)

Токен d возвращает индекс дня недели в числовом виде:

  • 0 — воскресенье
  • 1 — понедельник
  • 2 — вторник
  • 3 — среда
  • 4 — четверг
  • 5 — пятница
  • 6 — суббота

Пример:

moment().format('d');

Вывод:

3

Значение зависит от текущего дня недели.


dd — сокращённое обозначение дня

Токен dd возвращает краткое локализованное представление дня недели (обычно 2 символа):

Пример:

moment().format('dd');

Вывод:

We

Формат зависит от языка. В русской локали это может быть:

Ср

ddd — короткое название дня

Токен ddd возвращает сокращённое название дня недели:

moment().format('ddd');

Вывод:

Wed

или в русской локализации:

Ср

dddd — полное название дня

Токен dddd используется для получения полного названия дня недели:

moment().format('dddd');

Вывод:

Wednesday

или:

Среда

ISO-токен дня недели

E — ISO-нумерация дня недели (1–7)

Токен E возвращает день недели по стандарту ISO 8601:

  • 1 — понедельник
  • 7 — воскресенье

Пример:

moment().format('E');

Вывод:

3

(если день — среда)


Сравнение d и E

Токен Диапазон Начало недели Стандарт
d 0–6 Воскресенье локальный
E 1–7 Понедельник ISO 8601

Различие критично при работе с международными системами, где требуется строгая неделя, начинающаяся с понедельника.


Локализация названий дней

Moment.js использует локаль для преобразования токенов dd, ddd, dddd.

Пример установки локали:

moment.locale('ru');

После этого:

moment().format('dddd');

может вернуть:

среда

Локализация влияет на:

  • форму сокращений
  • падежи (в некоторых локалях)
  • регистр символов

Методы, связанные с днем недели

Помимо токенов форматирования, Moment.js предоставляет методы для работы с днем недели напрямую:

weekday()

Возвращает или устанавливает день недели в локальной системе:

moment().weekday();

Установка:

moment().weekday(1); // установить понедельник

isoWeekday()

Работает по ISO-стандарту:

moment().isoWeekday();

Установка:

moment().isoWeekday(7); // воскресенье

Примеры комбинированного форматирования

Полный вывод даты с днем недели

moment().format('YYYY-MM-DD dddd');

Результат:

2026-05-21 Thursday

Краткий формат с числовым индексом

moment().format('dd d');

Результат:

Th 4

ISO-представление дня недели в отчётах

moment().format('YYYY-WW-E');

Результат:

2026-21-3

Частые особенности поведения токенов

Зависимость от локали

Один и тот же токен может возвращать разные строки:

moment.locale('en');
moment().format('dddd'); // Wednesday

moment.locale('ru');
moment().format('dddd'); // среда

Несовпадение индексов

При переходе между d и E часто возникает ошибка интерпретации:

  • d = 0 → воскресенье
  • E = 7 → воскресенье

Это необходимо учитывать при вычислениях, связанных с календарными неделями.


Форматирование без локали

Если локаль не задана, используется английская:

moment.locale('en');
moment().format('ddd');

Таблица токенов дня недели

Токен Описание Пример
d Числовой индекс (0–6) 4
dd Короткое название Th
ddd Сокращённое имя Thu
dddd Полное имя Thursday
E ISO-день недели (1–7) 4