Даты
date(...) оборачивает момент времени в стиле dayjs: создаёте значение, цепляете арифметику,
завершаете format или timeAgo. Оба понимают русский и английский и по умолчанию берут
текущий язык устройства (device.language), если не передать его явно.
Форматирование — чистый JS, без Intl, поэтому вывод одинаков на любой платформе.
date(value?: Date | number | string | DateValue): DateValueАргументом может быть Date, таймстемп в миллисекундах (Date.now()), разбираемая строка или
другой DateValue; без аргумента — текущее время.
date().format('dddd, D MMMM') // "пятница, 10 июля" · "Friday, 10 July"
date(ts).format('DD.MM.YYYY HH:mm') // "10.07.2026 14:05"
date(ts).timeAgo() // "5 минут назад" · "5 minutes ago"Возвращаемый DateValue иммутабелен — каждый метод возвращает новое значение, так что его
безопасно хранить и переиспользовать. Через valueOf() он приводится к epoch-ms, поэтому
+date(x), date(a) - date(b) и date(a) < date(b) просто работают.
Форматирование — .format
.format(pattern = 'D MMMM YYYY', locale?: 'en' | 'ru'): stringФорматирует по шаблону из токенов в стиле day.js (по умолчанию — длинная дата).
YYYY YY |
год | 2026, 26 |
MMMM MMM MM M |
месяц | июля, июл, 07, 7 |
DD D |
день месяца | 05, 5 |
dddd ddd |
день недели | пятница, пт |
HH H |
час (24) | 08, 8 |
hh h |
час (12) | 08, 8 |
mm m |
минута | 05, 5 |
ss s |
секунда | 09, 9 |
A a |
AM/PM | PM, pm |
Символы вне токенов (пробелы, ., :, ,) копируются в вывод как есть.
Русский пишет месяц по-разному в зависимости от контекста: родительный рядом с числом
(10 июля), именительный сам по себе (Июль 2026). .format выбирает форму автоматически —
по наличию токена дня (D) в шаблоне.
Относительное время — .timeAgo
.timeAgo(locale?: 'en' | 'ru', now?: Date | number | DateValue): stringЧеловеческое относительное время от now (по умолчанию — текущий момент). Выбирает самую крупную
подходящую единицу, до ~45 секунд читается как «только что» / "just now" и правильно согласует
русские числительные (1 минуту / 2 минуты / 5 минут).
date(ts).timeAgo() // "5 минут назад" · "5 minutes ago"
date(future).timeAgo() // "через 2 дня" · "in 2 days"Арифметика — цепочки, иммутабельность
.add(n, unit) .subtract(n, unit) // unit: 'ms'|'second'|'minute'|'hour'|'day'|'week'|'month'|'year'
.startOf(unit) .endOf(unit) // к началу/концу единицы (локальное время)date().add(3, 'day').startOf('day').format('D MMMM') // "13 июля"
date(ts).endOf('month').format('D MMMM') // "31 июля"month/year учитывают календарь и обрезаются на коротких месяцах (Jan 31 + 1 month → Feb 28) —
как в day.js.
Сравнение и извлечение — скаляры
.diff(other, unit = 'ms'): number // целые единицы со знаком, усечение к нулю
.isBefore(other) .isAfter(other) .isSame(other): boolean
.valueOf(): number // epoch ms .unix(): number // epoch seconds
.year() .month() .day() .weekday() .hour() .minute() .second(): number
.toDate(): Datedate(a).diff(b, 'hour') // например, -3
date(a).isBefore(b) // true.month() начинается с 0, а .weekday() — 0 (воскресенье)–6, оба как у нативных геттеров Date.
Смотрите также
- device —
device.language, источник локали по умолчанию