В Day.js работа со временем основана на неизменяемых объектах (immutable instances). Любая операция извлечения возвращает данные без изменения исходного объекта. Это делает модель предсказуемой при цепочках преобразований.
Извлечение времени в Day.js условно делится на три категории:
Каждая категория используется в разных прикладных сценариях — от отображения интерфейсов до синхронизации с сервером.
Day.js предоставляет единый набор методов-геттеров для доступа к компонентам времени. Эти методы одновременно являются сеттерами, но при вызове без аргументов работают как извлечение значений.
import dayjs from 'dayjs';
const time = dayjs('2026-05-22T14:35:48.123');
Извлечение основных временных компонентов:
const hours = time.hour(); // 14
const minutes = time.minute(); // 35
const seconds = time.second(); // 48
const ms = time.millisecond(); // 123
Особенности:
hour() возвращает значение в 24-часовом форматеПомимо времени, часто требуется работа с календарными компонентами, которые тесно связаны с временной шкалой.
const year = time.year(); // 2026
const month = time.month(); // 4 (май, так как отсчёт с 0)
const date = time.date(); // 22
Важная особенность:
month() возвращает значение в диапазоне 0–11const weekday = time.day(); // 5
Интерпретация:
Этот метод используется для логики расписаний, фильтрации событий и построения календарных интерфейсов.
Одним из наиболее универсальных способов представления времени является Unix timestamp.
const unix = time.unix(); // 1747924548
Метод возвращает количество секунд, прошедших с 1 января 1970 года UTC.
const timestamp = time.valueOf(); // 1747924548123
Альтернативный вариант:
const timestamp2 = +time; // аналог valueOf()
Особенности:
valueOf() используется в арифметике датconst nativeDate = time.toDate();
Этот метод используется при интеграции с библиотеками, которые
ожидают нативный Date.
Хотя format() формально относится к представлению
данных, он часто используется как инструмент извлечения конкретных
частей времени в строковом виде.
const hours = time.format('HH');
const minutes = time.format('mm');
const seconds = time.format('ss');
Примеры шаблонов:
HH — часы (24-часовой формат)hh — часы (12-часовой формат)mm — минутыss — секундыSSS — миллисекундыДополнительные составные форматы:
const fullTime = time.format('HH:mm:ss');
const fullDateTime = time.format('YYYY-MM-DD HH:mm:ss');
При необходимости работы в универсальном времени используется плагин UTC.
import utc from 'dayjs/plugin/utc';
dayjs.extend(utc);
const utcTime = dayjs.utc('2026-05-22T14:35:48Z');
Извлечение компонентов:
utcTime.hour(); // часы в UTC
utcTime.minute(); // минуты в UTC
utcTime.second(); // секунды в UTC
Особенность:
Для работы с часовыми поясами используется плагин timezone.
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
dayjs.extend(utc);
dayjs.extend(timezone);
Пример установки зоны:
const nyTime = dayjs().tz('America/New_York');
Извлечение компонентов:
const h = nyTime.hour();
const m = nyTime.minute();
const s = nyTime.second();
Сравнение с UTC:
const utcTime = nyTime.utc();
nyTime.hour(); // локальное время Нью-Йорка
utcTime.hour(); // UTC-время
const now = dayjs();
const clock = {
h: now.hour(),
m: now.minute(),
s: now.second()
};
const hour = dayjs().hour();
const isWorkingTime = hour >= 9 && hour < 18;
function extractTimeParts(input) {
const d = dayjs(input);
return {
year: d.year(),
month: d.month(),
date: d.date(),
hour: d.hour(),
minute: d.minute(),
second: d.second()
};
}
const payload = {
timestamp: dayjs().valueOf(),
unix: dayjs().unix()
};
dayjs().month(); // январь = 0
Частая ошибка возникает при прямом отображении значения без преобразования.
Все методы извлечения используют локальную временную зону, если не активирован UTC:
dayjs().hour(); // зависит от окружения
dayjs().second(0).millisecond(0);
При последовательных изменениях важно учитывать неизменяемость объектов:
const t1 = dayjs();
const t2 = t1.hour(10);
t1.hour(); // исходное значение не изменилось
dayjs().valueOf(); // миллисекунды
dayjs().unix(); // секунды
Использование неправильного формата приводит к ошибкам при синхронизации с внешними системами.
dayjs().day(); // день недели, а не число месяца
Частая путаница с date() требует различения:
date() — день месяцаday() — день недели