LeCodesdocs

Даты

date(...) оборачивает момент времени в стиле dayjs: создаёте значение, цепляете арифметику, завершаете format или timeAgo. Оба понимают русский и английский и по умолчанию берут текущий язык устройства (device.language), если не передать его явно. Форматирование — чистый JS, без Intl, поэтому вывод одинаков на любой платформе.

TypeScript
date(value?: Date | number | string | DateValue): DateValue

Аргументом может быть Date, таймстемп в миллисекундах (Date.now()), разбираемая строка или другой DateValue; без аргумента — текущее время.

TypeScript
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

TypeScript
.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

TypeScript
.timeAgo(locale?: 'en' | 'ru', now?: Date | number | DateValue): string

Человеческое относительное время от now (по умолчанию — текущий момент). Выбирает самую крупную подходящую единицу, до ~45 секунд читается как «только что» / "just now" и правильно согласует русские числительные (1 минуту / 2 минуты / 5 минут).

TypeScript
date(ts).timeAgo()      // "5 минут назад"  ·  "5 minutes ago"
date(future).timeAgo()  // "через 2 дня"    ·  "in 2 days"

Арифметика — цепочки, иммутабельность

TypeScript
.add(n, unit)      .subtract(n, unit)      // unit: 'ms'|'second'|'minute'|'hour'|'day'|'week'|'month'|'year'
.startOf(unit)     .endOf(unit)            // к началу/концу единицы (локальное время)
TypeScript
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.

Сравнение и извлечение — скаляры

TypeScript
.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(): Date
TypeScript
date(a).diff(b, 'hour')   // например, -3
date(a).isBefore(b)       // true

.month() начинается с 0, а .weekday() — 0 (воскресенье)–6, оба как у нативных геттеров Date.

Смотрите также

  • devicedevice.language, источник локали по умолчанию