Формат ISO 8601 — международный стандарт представления даты и времени. Большинство API, баз данных, браузеров и серверных приложений используют именно его. Библиотека Day.js умеет автоматически распознавать ISO-строки без подключения дополнительных плагинов.
Типичные ISO-строки:
2025-01-10
2025-01-10T14:30:00
2025-01-10T14:30:00Z
2025-01-10T14:30:00+05:00
2025-01-10T14:30:00.000Z
Создание объекта даты из ISO-строки:
const dayjs = require('dayjs')
const date = dayjs('2025-01-10T14:30:00')
console.log(date.format())
Day.js автоматически определяет формат и создаёт внутренний объект даты.
Строка без времени интерпретируется как локальная дата.
const date = dayjs('2025-03-15')
console.log(date.format('YYYY-MM-DD'))
Результат:
2025-03-15
При этом время будет установлено в начало суток:
console.log(date.format('HH:mm:ss'))
Результат:
00:00:00
ISO-строка может содержать дату и время одновременно.
const date = dayjs('2025-03-15T18:45:30')
console.log(date.format('YYYY-MM-DD HH:mm:ss'))
Результат:
2025-03-15 18:45:30
Символ T разделяет дату и время согласно стандарту ISO
8601.
Суффикс Z указывает, что дата находится в UTC.
const date = dayjs('2025-03-15T18:45:30Z')
console.log(date.format())
Пример результата:
2025-03-15T23:45:30+05:00
Day.js преобразует UTC-время в локальный часовой пояс среды выполнения.
Локальное время:
dayjs('2025-03-15T12:00:00')
UTC-время:
dayjs('2025-03-15T12:00:00Z')
Во втором случае используется смещение UTC, поэтому итоговое отображение может отличаться.
ISO допускает указание смещения относительно UTC.
const date = dayjs('2025-03-15T12:00:00+03:00')
console.log(date.format())
Строка +03:00 означает, что время находится в часовом
поясе UTC+3.
Другой пример:
const date = dayjs('2025-03-15T12:00:00-04:00')
Здесь используется UTC-4.
Day.js корректно распознаёт миллисекунды.
const date = dayjs('2025-03-15T12:00:00.456Z')
console.log(date.millisecond())
Результат:
456
Метод isValid() позволяет проверить корректность
даты.
const validDate = dayjs('2025-03-15')
console.log(validDate.isValid())
Результат:
true
Некорректная дата:
const invalidDate = dayjs('2025-15-99')
console.log(invalidDate.isValid())
Результат:
false
Day.js старается автоматически определить формат строки.
dayjs('2025-03-15')
dayjs('2025-03-15T10:20:30')
dayjs('2025-03-15T10:20:30Z')
Однако неоднозначные строки могут интерпретироваться непредсказуемо:
dayjs('03/04/2025')
Неясно, что означает дата:
ISO-формат устраняет подобные проблемы.
Большинство REST API возвращают даты именно в ISO-виде.
Пример JSON:
{
"createdAt": "2025-03-15T10:20:30Z"
}
Обработка ответа:
const response = {
createdAt: '2025-03-15T10:20:30Z'
}
const createdAt = dayjs(response.createdAt)
console.log(createdAt.format('DD.MM.YYYY HH:mm'))
Частая задача — преобразование списка строк.
const dates = [
'2025-01-01',
'2025-02-01',
'2025-03-01'
]
const parsed = dates.map(date => dayjs(date))
console.log(parsed)
ISO-формат удобен тем, что строки можно сортировать даже без преобразования.
const dates = [
'2025-03-01',
'2025-01-01',
'2025-02-01'
]
dates.sort()
console.log(dates)
Результат:
[
'2025-01-01',
'2025-02-01',
'2025-03-01'
]
Это возможно благодаря структуре:
YYYY-MM-DD
const date = dayjs('2025-03-15T12:00:00Z')
console.log(date.valueOf())
Результат:
1742040000000
Метод valueOf() возвращает количество миллисекунд с 1
января 1970 года.
Метод toISOString() преобразует объект Day.js обратно в
ISO.
const date = dayjs()
console.log(date.toISOString())
Пример результата:
2025-03-15T09:20:30.000Z
Для полноценной работы с UTC используется плагин
utc.
Подключение:
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
Создание UTC-даты:
const date = dayjs.utc('2025-03-15T12:00:00Z')
console.log(date.format())
dayjs() и dayjs.utc()dayjs('2025-03-15T12:00:00Z')
Создаёт локальное представление даты.
dayjs.utc('2025-03-15T12:00:00Z')
Сохраняет дату в UTC-режиме.
Это влияет на:
const first = dayjs('2025-01-01')
const second = dayjs('2025-02-01')
console.log(first.isBefore(second))
Результат:
true
Проверка равенства:
console.log(first.isSame(second))
const start = dayjs('2025-01-01')
const end = dayjs('2025-01-10')
console.log(end.diff(start, 'day'))
Результат:
9
Для работы с конкретными часовыми поясами используется плагин
timezone.
Установка:
npm install dayjs
Подключение:
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
Парсинг:
const date = dayjs.tz(
'2025-03-15T12:00:00',
'Europe/Moscow'
)
console.log(date.format())
2025-03-15
2025-03-15T12:30:00
2025-03-15T12:30:00Z
2025-03-15T12:30:00+03:00
2025-03-15T12:30:00.123Z
Zdayjs('2025-03-15T12:00:00')
Дата считается локальной.
dayjs('2025-03-15T12:00:00+99:00')
Дата будет невалидной.
dayjs('2025-03')
Результат зависит от среды выполнения и не всегда предсказуем.
isValid();15.03.2025.