Метод toISODate() в библиотеке Luxon возвращает строку с
датой в стандарте ISO 8601 без включения времени. Формат результата
строго фиксирован и соответствует шаблону:
YYYY-MM-DD
Это делает метод удобным для задач, где требуется передавать только календарную дату без временной составляющей и без учёта часовых поясов в итоговой строке.
В основе метода лежит объект DateTime, который хранит
полную информацию о моменте времени, включая дату, время и временную
зону. При вызове toISODate() происходит извлечение только
компонент даты.
import { DateTime } from "luxon";
const dt = DateTime.local(2026, 1, 24, 18, 45);
const result = dt.toISODate();
console.log(result);
Результат:
2026-01-24
Время полностью исключается из строки, даже если оно присутствует в исходном объекте.
toISODate() не отображает временную зону, однако
вычисление даты происходит с учётом текущего контекста
DateTime.
const dt = DateTime.fromISO("2026-01-24T23:30:00", { zone: "Asia/Almaty" });
console.log(dt.toISODate());
Выход:
2026-01-24
Если значение времени пересекает границу суток в другой зоне,
результат может изменяться при смене zone.
const dt = DateTime.fromISO("2026-01-24T23:30:00", { zone: "UTC" })
.setZone("Asia/Tokyo");
console.log(dt.toISODate());
Дата может стать следующей, так как конвертация временной зоны изменяет календарную дату.
toISOTime()Метод toISOTime() возвращает строку, содержащую только
временную часть даты в формате ISO 8601. Формат зависит от точности и
может включать часы, минуты, секунды и миллисекунды.
Базовый формат:
HH:mm:ss.sss
import { DateTime } from "luxon";
const dt = DateTime.local(2026, 1, 24, 18, 45, 12);
const result = dt.toISOTime();
console.log(result);
Результат:
18:45:12.000
Если миллисекунды равны нулю, они всё равно могут отображаться в зависимости от настроек метода.
toISOTime()Метод поддерживает объект параметров, позволяющий управлять точностью и форматом вывода.
const dt = DateTime.local(2026, 1, 24, 18, 45, 12, 345);
console.log(dt.toISOTime({ suppressMilliseconds: true }));
Результат:
18:45:12
console.log(dt.toISOTime({ suppressSeconds: true }));
Результат:
18:45
const dt = DateTime.local(2026, 1, 24, 18, 45, 0);
console.log(dt.toISOTime({ suppressSeconds: true }));
Результат:
18:45
toISOTime() всегда возвращает время в рамках текущего
DateTime объекта, без добавления информации о зоне.
const dt = DateTime.fromISO("2026-01-24T18:45:00", { zone: "UTC" })
.setZone("Asia/Almaty");
console.log(dt.toISOTime());
Значение времени изменяется в соответствии с разницей часовых поясов.
toISO()Методы toISODate() и toISOTime() являются
частными случаями toISO():
toISO() — возвращает полную дату и времяtoISODate() — только датаtoISOTime() — только времяconst dt = DateTime.local(2026, 1, 24, 18, 45, 12);
dt.toISO(); // 2026-01-24T18:45:12.000+06:00
dt.toISODate(); // 2026-01-24
dt.toISOTime(); // 18:45:12.000
Разделение полезно при работе с API, где требуется строгое соответствие формату без лишних компонентов.
Оба метода возвращают строки, соответствующие ISO 8601, что гарантирует:
toISODate() применяется при:
const key = dt.toISODate();
toISOTime() применяется при:
const time = dt.toISOTime({ suppressSeconds: true });
toString()Стандартный toString() в Luxon учитывает локальные
настройки и может возвращать разные форматы, тогда как ISO-методы всегда
дают унифицированный результат.
dt.toString(); // локализованный формат
dt.toISODate(); // строго YYYY-MM-DD
dt.toISOTime(); // строго HH:mm:ss