В Luxon метод DateTime.fromISO() используется для
преобразования строк формата ISO 8601 в полноценный объект
DateTime. Этот метод является одним из базовых способов
парсинга дат, поскольку ISO-строки считаются стандартом обмена датами в
веб-разработке и API.
Метод fromISO() принимает строку даты и времени в
формате ISO 8601 и возвращает объект DateTime, который уже
содержит:
Если строка не соответствует ISO-формату, результатом становится
объект с состоянием Invalid.
DateTime.fromISO(text, options)
text (string) Строка в формате ISO 8601. Примеры:
"2026-05-23""2026-05-23T14:30:00""2026-05-23T14:30:00.000Z""2026-05-23T14:30:00+06:00"options (Object, необязательный)
Основные параметры:
zone — принудительная установка временной зоныsetZone — использовать ли зону из строки
(true/false)includeOffset — сохранять ли смещение из строкиlocale — локаль (например, "ru",
"en")import { DateTime } from "luxon";
const dt = DateTime.fromISO("2026-05-23");
console.log(dt.toString());
Результат интерпретируется как дата в локальной зоне окружения.
const dt = DateTime.fromISO("2026-05-23T14:30:00");
Здесь Luxon создаёт объект с точным временем, но без информации о часовом поясе в строке.
const dt = DateTime.fromISO("2026-05-23T14:30:00Z");
Символ Z означает UTC. Luxon интерпретирует это как
всемирное координированное время.
const dt = DateTime.fromISO("2026-05-23T14:30:00+06:00");
Смещение +06:00 сохраняется и учитывается при
вычислениях.
zoneconst dt = DateTime.fromISO("2026-05-23T14:30:00", {
zone: "Europe/Moscow"
});
Строка интерпретируется так, будто она принадлежит указанной зоне.
const dt = DateTime.fromISO("2026-05-23T14:30:00+06:00", {
setZone: false
});
В этом случае смещение из строки игнорируется, и время пересчитывается в текущую локальную зону.
const dt = DateTime.fromISO("2026-05-23T14:30:00+06:00", {
includeOffset: false
});
При includeOffset: false смещение не используется как
источник истины, а дата приводится к локальному времени.
Метод поддерживает широкий диапазон форматов:
DateTime.fromISO("2026-05-23");
DateTime.fromISO("2026-05-23T14:30:00.123");
DateTime.fromISO("2026-05-23T14:30:00.123Z");
DateTime.fromISO("2026-05-23T14:30:00.123+03:00");
Luxon допускает неполные строки ISO:
DateTime.fromISO("2026-05");
или
DateTime.fromISO("2026");
В таких случаях недостающие компоненты заполняются минимальными значениями:
const dt = DateTime.fromISO("invalid-string");
if (!dt.isValid) {
console.log(dt.invalidReason);
}
invalidReason:unparsableinvalid inputout of rangeconst dt = DateTime.fromISO("2026-05-23T14:30:00", {
locale: "ru"
});
Локаль влияет не на парсинг, а на последующее форматирование:
dt.toLocaleString(DateTime.DATETIME_FULL);
DateTime.fromISO():
new Date():
DateTime.fromISO("2026-05-23T14:30:00");
Без Z или offset время считается локальным, что часто
приводит к смещению при передаче данных между системами.
DateTime.fromISO("2026-05-23T14:30:00");
Это не UTC. Для UTC требуется:
DateTime.fromISO("2026-05-23T14:30:00Z");
isValidconst dt = DateTime.fromISO("2026-99-99");
console.log(dt.toString()); // некорректный результат
Без проверки isValid можно получить логически
некорректные данные.
const dt = DateTime
.fromISO("2026-05-23T14:30:00Z")
.setZone("Asia/Almaty")
.plus({ days: 2 })
.toISO();
Здесь:
DateTime.fromISO("2026-05-23");
Luxon интерпретирует это как:
2026-05-23T00:00:00
в локальной временной зоне, если не указано иное.
Z = UTCsetZone: true сохраняет оригинальную зону, если она
естьfromISO() обычно используется:
ISO-формат выступает универсальным контрактом, а Luxon обеспечивает
строгую и предсказуемую интерпретацию этих данных без неоднозначностей
стандартного Date.