Форматирование дня недели

Форматирование дня недели в Day.js основано на системе токенов, которые подставляются в строку формата и преобразуют объект даты в человекочитаемое представление. Для вывода дня недели используется метод format(), который интерпретирует специальные шаблоны в зависимости от текущей локали.


В Day.js день недели извлекается из объекта даты и преобразуется в строку с помощью следующих форматов:

  • d — числовое представление дня недели (0–6)
  • dd — сокращённое название дня недели
  • ddd — короткое название дня недели (обычно 3 буквы)
  • dddd — полное название дня недели

Поведение этих токенов зависит от установленной локали, так как названия дней недели хранятся в языковых пакетах.


Числовое представление дня недели

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

dayjs().format('d')

Результат зависит от текущего дня:

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

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


Сокращённые и полные названия дней недели

Токены dd, ddd и dddd отвечают за текстовое представление дня недели.

dayjs().format('dd')   // Сокращённое (зависит от локали)
dayjs().format('ddd')  // Короткое название
dayjs().format('dddd') // Полное название

Пример для английской локали:

dayjs().format('ddd')  // "Mon"
dayjs().format('dddd') // "Monday"

Пример для русской локали:

dayjs().format('ddd')  // "пн"
dayjs().format('dddd') // "понедельник"

Роль локализации в форматировании

Day.js использует систему локалей для определения текстовых значений дней недели. Без подключения локали все текстовые форматы остаются в английском языке.

Подключение локали осуществляется через импорт:

import dayjs from 'dayjs'
import 'dayjs/locale/ru'

dayjs.locale('ru')

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


Поведение токена dd

Токен dd является локализованным сокращением дня недели. В разных языках его длина и формат могут отличаться:

  • английский: Mo, Tu, We
  • русский: пн, вт, ср
dayjs().format('dd')

Этот формат применяется в компактных интерфейсах, календарях и таблицах, где важно экономить пространство.


Комбинирование дня недели с другими форматами

Форматирование дня недели часто используется вместе с датой и временем:

dayjs().format('dddd, DD MMMM YYYY')

Пример результата (русская локаль):

понедельник, 15 января 2026

Другой вариант:

dayjs().format('ddd, HH:mm')

Результат:

пн, 14:30

Использование кастомных шаблонов

Day.js позволяет свободно комбинировать токены, создавая собственные форматы отображения:

dayjs().format('[Сегодня:] dddd')

Квадратные скобки используются для вывода текста без интерпретации как токенов.

Результат:

Сегодня: понедельник

Извлечение дня недели без форматирования

Помимо format(), существует метод day(), возвращающий числовое значение дня недели:

dayjs().day()

Этот метод используется в логике вычислений:

if (dayjs().day() === 1) {
  console.log('Понедельник')
}

Особенности индексации дней недели

В Day.js используется следующая система:

  • 0 — воскресенье
  • 1–6 — понедельник–суббота

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


Настройка начала недели через плагины

Day.js по умолчанию не изменяет порядок дней недели, однако логика отображения может зависеть от локали. При необходимости кастомного поведения используется дополнительная обработка:

const adjustedDay = (dayjs().day() + 6) % 7

Такой подход позволяет сместить начало недели на понедельник.


Форматирование в условиях различных локалей

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

Пример:

dayjs.locale('en')
dayjs().format('dddd')

dayjs.locale('ru')
dayjs().format('dddd')

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


Практика использования в интерфейсах

Форматы дня недели применяются в различных UI-сценариях:

  • календарные компоненты
  • расписания
  • ленты событий
  • аналитические панели

Чаще всего используются ddd для компактного отображения и dddd для полноформатного интерфейса.


Совмещение с относительными датами

Формат дня недели часто комбинируется с относительными значениями:

dayjs().subtract(1, 'day').format('dddd')

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