Форматирование дня недели в Day.js основано на системе токенов,
которые подставляются в строку формата и преобразуют объект даты в
человекочитаемое представление. Для вывода дня недели используется метод
format(), который интерпретирует специальные шаблоны в
зависимости от текущей локали.
В Day.js день недели извлекается из объекта даты и преобразуется в строку с помощью следующих форматов:
d — числовое представление дня недели (0–6)dd — сокращённое название дня неделиddd — короткое название дня недели (обычно 3
буквы)dddd — полное название дня неделиПоведение этих токенов зависит от установленной локали, так как названия дней недели хранятся в языковых пакетах.
Токен d возвращает индекс дня недели:
dayjs().format('d')
Результат зависит от текущего дня:
Этот формат часто используется в логике приложений, где требуется сравнение или вычисления, а не текстовое отображение.
Токены 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 является локализованным сокращением дня недели.
В разных языках его длина и формат могут отличаться:
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 используется следующая система:
Это важно учитывать при работе с календарной логикой, особенно при интеграции с внешними 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')
Такой подход позволяет строить динамические описания событий, например отображение предыдущих и будущих дней недели в пользовательских интерфейсах.