Библиотека Day.js предоставляет компактный и предсказуемый API для работы с датами в JavaScript. Одной из базовых операций является получение отдельных компонентов даты: года, месяца и дня. Эти значения могут извлекаться как через методы-геттеры, так и через универсальный интерфейс доступа к полям.
Day.js использует набор методов, соответствующих стандартным частям календарной даты:
year() — возвращает годmonth() — возвращает месяц (отсчёт с нуля)date() — возвращает день месяцаimport dayjs from 'dayjs';
const d = dayjs('2026-05-22');
const year = d.year(); // 2026
const month = d.month(); // 4 (май, т.к. январь = 0)
const day = d.date(); // 22
Каждый из этих методов возвращает число и не изменяет исходный объект. Day.js сохраняет иммутабельность: любые операции создают новое представление только при необходимости модификации.
Месяцы в Day.js нумеруются с нуля:
dayjs('2026-01-15').month(); // 0
dayjs('2026-12-01').month(); // 11
Для приведения к привычному человеческому формату часто применяется добавление единицы:
const humanMonth = dayjs().month() + 1;
getПомимо специализированных методов, Day.js поддерживает универсальный
интерфейс get, который позволяет извлекать компоненты даты
по строковому ключу:
const d = dayjs('2026-05-22');
d.get('year'); // 2026
d.get('month'); // 4
d.get('date'); // 22
Поддерживаемые ключи:
'year''month''date''day' (день недели)'hour''minute''second''millisecond'Использование get удобно при динамическом выборе
поля:
const field = 'year';
const value = dayjs().get(field);
В случаях, когда требуется строковое представление, используется
метод format. Он позволяет извлекать компоненты даты в
заданном виде.
const d = dayjs('2026-05-22');
d.format('YYYY'); // "2026"
d.format('MM'); // "05"
d.format('DD'); // "22"
YYYY — полный годYY — последние две цифры годаMM — месяц с ведущим нулёмM — месяц без ведущего нуляDD — день месяца с ведущим нулёмD — день месяца без ведущего нуляdayjs('2026-01-05').format('YYYY-M-D'); // "2026-1-5"
Форматирование используется не только для вывода, но и как способ унифицированного извлечения данных в строковом виде.
const d = dayjs('2026-05-22');
d.year(); // число
d.month(); // число (0–11)
d.date(); // число (1–31)
Преимущества:
getd.get('year');
d.get('month');
d.get('date');
Преимущества:
Недостатки:
d.format('YYYY-MM-DD');
Преимущества:
Недостатки:
При извлечении компонентов часто используется текущий момент времени:
const now = dayjs();
const year = now.year();
const month = now.month();
const day = now.date();
Такой подход используется в логике отображения календарей, фильтров по датам и временных меток.
Методы year, month и date не
зависят от локали. Они возвращают абсолютные числовые значения,
основанные на внутреннем представлении даты в UTC/локальном времени.
Локаль влияет только на форматирование:
dayjs('2026-05-22').format('MMMM'); // название месяца зависит от локали
Но:
dayjs('2026-05-22').month(); // всегда 4
При парсинге строк Day.js автоматически нормализует входные данные:
dayjs('2026-05-22T10:30:00')
После этого извлечение компонентов остаётся неизменным:
const d = dayjs('2026-05-22T10:30:00');
d.year(); // 2026
d.month(); // 4
d.date(); // 22
dayjs('2026-02-28').add(1, 'day').date(); // 1 (март)
Компоненты даты пересчитываются автоматически при изменении объекта.
dayjs('invalid').year(); // NaN
dayjs('invalid').month(); // NaN
При некорректном вводе возвращаются значения NaN, что
позволяет выявлять ошибки парсинга.
Для получения всех частей даты используется последовательный вызов методов:
const d = dayjs('2026-05-22');
const result = {
year: d.year(),
month: d.month(),
day: d.date()
};
Альтернативно используется форматирование с последующим разбором строки, однако числовые методы остаются предпочтительнее для вычислений.
Извлечённые компоненты применяются в арифметике дат и бизнес-логике:
const d = dayjs('2026-05-22');
const nextYear = d.year() + 1;
const prevMonth = d.month() - 1;
const doubledDay = d.date() * 2;
Однако прямое изменение чисел не влияет на объект Day.js; для
изменения даты используются методы set или
add.
set-методамиИзвлечение часто используется совместно с установкой значений:
const d = dayjs('2026-05-22');
const updated = d
.year(d.year() + 1)
.month(0)
.date(1);
Такой подход позволяет строить новые даты на основе существующих компонентов.
year(), month(), date() —
основные числовые методыget() обеспечивает универсальный доступformat() используется для строкового извлеченияNaN