Библиотека Day.js строится вокруг компактного набора методов, где поведение почти каждого вызова определяется типами и порядком передаваемых параметров. Основные категории параметров можно разделить на:
Понимание структуры аргументов критично, поскольку Day.js не использует перегруженные сигнатуры в стиле TypeScript-методов с явной типизацией — различие поведения определяется именно комбинацией типов входных данных.
dayjs() и его параметрыБазовая функция создания экземпляра имеет несколько форм вызова:
dayjs()
Используется текущее время системы. Аргументы отсутствуют, поведение фиксированное.
dayjs('2024-01-01')
dayjs(1710000000000)
dayjs(new Date())
Тип входного параметра определяет стратегию парсинга:
dayjs('01-02-2024', 'DD-MM-YYYY', true)
Сигнатура:
dayjs(input, format?, strict?)
Параметры:
input — строка даты;format — строка шаблона;strict — булево значение.Булев флаг strict изменяет алгоритм парсинга:
true — полное соответствие формату;false или отсутствует — допускается частичное
совпадение.Особенность: строгий режим влияет только при наличии формата, иначе игнорируется.
При подключении плагина допускается массив форматов:
dayjs('12-01-2024', ['DD-MM-YYYY', 'MM-DD-YYYY'], true)
Здесь параметры:
Алгоритм перебирает форматы последовательно до первого совпадения.
add(number, unit)Метод смещения времени имеет фиксированную сигнатуру:
dayjs().add(2, 'day')
Параметры:
number — числовое значение (может быть
отрицательным);unit — строка единицы измерения.Поддерживаемые единицы:
millisecondsecondminutehourdayweekmonthyearОсобенность: строка unit не нормализуется автоматически,
требуется точное совпадение с внутренним словарём.
subtract(number, unit)Идентична add, но знак операции инвертирован:
dayjs().subtract(10, 'minute')
Параметры полностью повторяют структуру add.
diff(other, unit?, floating?)Сигнатура:
dayjs().diff(dayjs(), 'day', true)
Параметры:
other — дата сравнения (dayjs, Date, timestamp);unit — строка единицы измерения;floating — булев флаг дробного результата.unit возвращается разница в миллисекундах;unit результат конвертируется;floating = true возвращает дробные значения;floating = false округляет вниз.startOf(unit) и
endOf(unit)dayjs().startOf('month')
dayjs().endOf('day')
Параметр:
unit — строка временной гранулярности.Поддерживаемые значения:
yearmonthweekdayhourminutesecondПоведение зависит от календарной модели:
startOf обнуляет младшие единицы;endOf устанавливает максимальные значения для
интервала.set(unit, value)Метод точечного изменения временного компонента:
dayjs().set('hour', 15)
Параметры:
unit — строка поля времени;value — числовое значение.Допустимые единицы:
yearmonthdatehourminutesecondmillisecondОсобенность: month индексируется с нуля (0–11), что
влияет на передачу параметров.
format(template?)dayjs().format('YYYY-MM-DD')
Параметр:
template — строка шаблона формата.Если параметр отсутствует, используется формат ISO-подобного представления по умолчанию.
YYYY — годMM — месяцDD — деньHH — часы (24h)mm — минутыss — секундыФорматирование строго зависит от строки шаблона, дополнительные параметры отсутствуют.
locale(lang?)dayjs().locale('ru')
Параметр:
lang — строка идентификатора локали.Поведение:
Локаль влияет на:
isValid()dayjs('invalid').isValid()
Параметры отсутствуют. Метод опирается на внутренний флаг состояния объекта.
toDate()dayjs().toDate()
Без параметров. Возвращает стандартный объект Date.
valueOf()dayjs().valueOf()
Без параметров. Возвращает timestamp в миллисекундах.
Day.js поддерживает цепочное применение методов, где каждый метод возвращает новый экземпляр. Параметры каждого вызова независимы, но порядок влияет на итоговый результат.
dayjs()
.add(1, 'day')
.set('hour', 10)
.format('YYYY-MM-DD HH:mm')
Здесь параметры распределяются по этапам:
add(1, 'day') — смещение;set('hour', 10) — модификация поля;format(...) — финальное представление.Используются для:
'YYYY-MM-DD');'month');'ru').Строгая проверка отсутствует на уровне API, ошибки проявляются в поведении результата.
Применяются в:
add, subtract, set,
diff.Особенности:
diff с floating).Используются как модификаторы поведения:
Булевы флаги всегда располагаются последними в сигнатуре методов.
В базовом ядре Day.js почти не используются, но появляются через плагины:
Общая особенность: объект всегда рассматривается как единый параметр без перегрузки ключей на уровне сигнатуры.
Day.js расширяется через плагины, и многие из них добавляют новые сигнатуры.
dayjs().utcOffset(180)
Параметр:
number — смещение в минутах.dayjs.duration(2, 'hours')
Параметры:
Структура аналогична add, но используется для
представления длительности.
Параметры методов Day.js формируют унифицированную систему, где:
Эта модель позволяет сохранять компактность API при высокой выразительности операций над датой и временем.