В библиотеке Day.js работа с часовыми значениями основана на извлечении и изменении отдельных частей временного объекта: часов, минут, секунд и миллисекунд. Все операции выполняются через единый экземпляр Day.js, который представляет собой неизменяемую структуру: каждое изменение возвращает новый объект.
Метод hour() используется для получения и установки
значения часов в 24-часовом формате.
dayjs().hour()
Возвращает текущее значение часов (от 0 до 23).
При передаче аргумента метод превращается в сеттер:
dayjs().hour(14)
Особенности поведения:
dayjs().hour(25) // интерпретируется как 1 следующего дня
Метод minute() работает аналогично и отвечает за минуты
текущего времени.
dayjs().minute()
Установка значения:
dayjs().minute(45)
Ключевые характеристики:
dayjs().minute(75) // +1 час и 15 минут
Метод second() управляет секундной частью времени.
dayjs().second()
Установка:
dayjs().second(30)
Поведение:
dayjs().second(120) // +2 минуты
Метод millisecond() позволяет работать с наименьшей
единицей времени в Day.js.
dayjs().millisecond()
Установка:
dayjs().millisecond(500)
Особенности:
dayjs().millisecond(1500) // +1 секунда и 500 мс
Day.js поддерживает последовательную установку всех компонентов времени в цепочке вызовов:
dayjs()
.hour(10)
.minute(30)
.second(15)
.millisecond(250)
Такой подход позволяет точно сформировать временную метку без
использования внешних объектов Date.
Работа с уже существующими значениями часто требует изменения только части времени при сохранении даты.
const time = dayjs('2026-05-22T08:15:00')
time.hour(12)
В результате:
Каждый вызов метода изменения времени возвращает новый объект.
const t1 = dayjs()
const t2 = t1.hour(5)
t1 === t2 // false
Это свойство важно при построении предсказуемых вычислений времени:
Day.js автоматически корректирует выход за пределы допустимых диапазонов.
dayjs().minute(120)
Результат:
dayjs().second(3605)
Результат:
Важно различать установку значений и арифметические операции.
dayjs().hour(10)
dayjs().add(2, 'hour')
Хотя работа с компонентами времени возможна через hour,
minute, second, более сложные сценарии требуют
использования арифметических методов.
dayjs().add(3, 'hour')
dayjs().subtract(15, 'minute')
dayjs()
.add(1, 'hour')
.subtract(30, 'minute')
Для установки начала временного интервала используется метод
startOf().
dayjs().startOf('hour')
Результат:
dayjs().startOf('minute')
Результат:
Метод endOf() устанавливает максимальное значение для
выбранной единицы.
dayjs().endOf('hour')
Результат:
dayjs().endOf('minute')
Час, минуты, секунды и миллисекунды связаны между собой через каскадную нормализацию. Изменение младшей единицы может повлиять на старшие.
Пример:
dayjs()
.hour(10)
.minute(59)
.second(59)
.add(1, 'second')
Результат:
Создание времени «с нуля» часто используется при построении таймеров и расчётных систем.
dayjs()
.hour(0)
.minute(0)
.second(0)
.millisecond(0)
Такая конструкция задаёт чистую временную базу без остаточных значений.
После изменения компонентов времени результат обычно форматируется:
dayjs()
.hour(9)
.minute(5)
.second(3)
.format('HH:mm:ss')
Форматирование:
HH — часы (24-часовой формат)mm — минутыss — секундыlet t = dayjs().hour(0).minute(10).second(0)
t = t.subtract(1, 'second')
const eventTime = dayjs()
.hour(18)
.minute(30)
.second(0)
const aligned = dayjs().startOf('minute')
Day.js корректно обрабатывает переполнение времени:
Это упрощает работу с временными вычислениями и снижает необходимость ручной нормализации значений.
При последовательных изменениях важно учитывать порядок вызовов:
dayjs()
.second(50)
.add(15, 'second')
.minute(10)
Каждый шаг пересчитывает состояние объекта, формируя новое значение времени без сохранения промежуточных мутаций.