В библиотеке Luxon работа с временными зонами построена вокруг двух
ключевых понятий: самой зоны (zone) и её текстового
идентификатора (zoneName). Свойство zoneName
представляет собой строковое имя временной зоны, в которой
интерпретируется конкретный объект DateTime.
zoneNamezoneName — это строковое представление текущей временной
зоны объекта DateTime. Оно отражает идентификатор зоны в
формате:
"Europe/Berlin", "Asia/Almaty",
"America/New_York""UTC+3",
"UTC-5""local", "utc"zoneName не является самостоятельным источником времени
или смещения. Это только имя, связанное с объектом зоны
(Zone), которое используется внутри Luxon для
вычислений.
zoneNameСвойство доступно у любого экземпляра DateTime.
import { DateTime } from "luxon";
const dt = DateTime.now();
dt.zoneName;
Результат зависит от окружения, например:
"Europe/Moscow"
или
"Asia/Almaty"
zonezoneName тесно связано с полем zone. Однако
между ними есть различие:
zone — объект временной зоны (Zone)zoneName — строковый идентификатор этой зоныconst dt = DateTime.now();
dt.zone; // Zone instance
dt.zoneName; // string
zoneName является производным значением от
zone.id.
Для стандартных временных зон возвращается их полное имя:
DateTime.now().setZone("Asia/Tokyo").zoneName;
Результат:
"Asia/Tokyo"
DateTime.utc().zoneName;
Результат:
"UTC"
DateTime.local().zoneName;
Результат зависит от системы:
"Europe/Paris"
или другая системная зона.
При использовании фиксированных offset-зон:
DateTime.now().setZone("UTC+5").zoneName;
Результат:
"UTC+5"
При изменении зоны через setZone, значение
zoneName меняется вместе с контекстом времени.
const dt = DateTime.now();
const shifted = dt.setZone("America/New_York");
shifted.zoneName;
Результат:
"America/New_York"
При этом сам момент времени остаётся тем же, меняется только интерпретация.
offsetNameShort и offsetСвойство zoneName часто путается с другими временными
метаданными.
dt.offset; // например -180
dt.offsetNameShort; // "GMT+3"
toFormatПри форматировании даты zoneName может использоваться
как дополнительная метаинформация:
const dt = DateTime.now().setZone("Asia/Almaty");
`${dt.toISO()} ${dt.zoneName}`;
Результат:
2026-05-23T14:30:00.000+05:00 Asia/Almaty
Экземпляры DateTime в Luxon являются иммутабельными. Это
означает:
zoneName всегда соответствует текущему состоянию
объектаconst a = DateTime.now();
const b = a.setZone("UTC");
a.zoneName !== b.zoneName;
Если зона не задана явно, используется системная локальная зона окружения:
DateTime.fromMillis(0).zoneName;
Результат:
локальная системная зона
zoneName часто применяется для:
Пример хранения состояния:
const state = {
timestamp: DateTime.now().toISO(),
zone: DateTime.now().zoneName
};
В некоторых окружениях (например, Node.js или браузерах)
zoneName может отличаться:
Это делает значение zoneName зависимым от среды
выполнения.
Zone объектомПри использовании toJSON() или toISO()
zoneName не включается автоматически:
const dt = DateTime.now();
JSON.stringify(dt);
Результат включает только стандартные поля времени, без имени зоны.
Для сохранения зоны требуется явное добавление:
{
iso: dt.toISO(),
zoneName: dt.zoneName
}