Квартал в календарной системе представляет собой период из трёх месяцев, используемый для финансовой, аналитической и отчётной агрегации данных. В Day.js работа с кварталами реализуется через отдельный плагин, расширяющий базовый функционал библиотеки.
Базовая сборка Day.js не включает методы работы с кварталами. Для их
активации используется плагин quarterOfYear.
import dayjs from 'dayjs'
import quarterOfYear from 'dayjs/plugin/quarterOfYear'
dayjs.extend(quarterOfYear)
После подключения становятся доступными методы получения и установки
квартала, а также использование единицы времени quarter в
операциях округления дат.
После расширения функциональности экземпляр Day.js получает метод
quarter(), возвращающий номер квартала текущей даты.
dayjs('2026-05-22').quarter() // 2
dayjs('2026-11-10').quarter() // 4
Календарное распределение кварталов:
Значение всегда находится в диапазоне от 1 до 4.
Метод quarter() выполняет двойную роль: получение и
изменение значения квартала. При передаче аргумента дата изменяется на
соответствующий квартал.
dayjs('2026-01-15').quarter(3)
В результате дата будет перенесена в третий квартал, при этом сохраняются день и время, если они допустимы в новом диапазоне. Day.js автоматически корректирует значения, выходящие за пределы месяца.
Изменение квартала не заменяет объект полностью, а пересчитывает месяц в пределах квартальной группы. Например:
dayjs('2026-02-10').quarter(4)
Февраль (1 квартал) будет преобразован в соответствующий месяц четвёртого квартала (октябрь–декабрь), при этом день месяца может быть скорректирован в зависимости от длины месяца.
После подключения плагина становится доступной единица времени
quarter в методах округления:
dayjs('2026-05-22').startOf('quarter')
dayjs('2026-05-22').endOf('quarter')
startOf('quarter') устанавливает дату на первый день
первого месяца квартала в 00:00:00.000.
endOf('quarter') устанавливает дату на последний момент
последнего дня третьего месяца квартала.
Такие операции широко применяются в агрегации финансовых периодов и построении отчётных интервалов.
Квартал логически связан с месяцами, но не влияет напрямую на недели или дни. При изменении квартала Day.js пересчитывает только месячную составляющую, оставляя остальную структуру даты неизменной, если это возможно.
Пример цепочки преобразований:
dayjs('2026-07-15')
.quarter(1)
.month() // пересчёт в январь–март диапазон
При установке квартала следует учитывать несколько особенностей:
Для отображения квартала используется токен Q в методе
format():
dayjs('2026-05-22').format('Q')
Это позволяет интегрировать квартальную информацию в строки отчётов и аналитических представлений.
Квартал часто применяется в комбинации с другими операциями Day.js:
dayjs()
.quarter(2)
.startOf('quarter')
.add(10, 'day')
Такие цепочки используются для построения диапазонов выборки данных, особенно в аналитических системах, где требуется смещение относительно квартальной сетки.
Квартальная логика не зависит от временных зон напрямую, однако итоговые даты могут изменяться при преобразованиях, связанных с локальным временем или UTC. При работе с UTC-режимом корректировка квартала выполняется в рамках универсального времени без привязки к локальным смещениям.
dayjs.utc('2026-05-22').quarter()
При преобразовании даты в строку или ISO-формат значение квартала не сохраняется как отдельное поле, так как является производной характеристикой. Оно восстанавливается только через вычисление на основе месяца.