Temporal.ZonedDateTime.from()
Базовый уровень Ограниченная доступность
Эта функция не входит в Базовый уровень, поскольку она не работает в некоторых наиболее широко используемых браузерах.
Статический метод Temporal.ZonedDateTime.from() создаёт новый объект Temporal.ZonedDateTime из другого объекта Temporal.ZonedDateTime, объекта со свойствами даты, времени и часового пояса или строки в формате RFC 9557.
Синтаксис
Temporal.ZonedDateTime.from(info) Temporal.ZonedDateTime.from(info, options)
Параметры
-
info - Одно из следующего:
- Экземпляр
Temporal.ZonedDateTime, который создаёт копию этого экземпляра. - Строка в формате RFC 9557, содержащая дату, необязательно время и смещение, аннотацию часового пояса и необязательно календарь.
- Объект, содержащий свойства, допустимые для метода
Temporal.PlainDate.from()(calendar,era,eraYear,year,month,monthCode,day) илиTemporal.PlainTime.from()(hour,minute,second,millisecond,microsecond,nanosecond). В объекте info необходимо явно указать год (какyearили какeraиeraYear), месяц (какmonthилиmonthCode) и день; остальные значения необязательны и будут установлены по умолчанию. Также необходимо указать следующие свойства:-
timeZone - Строка или экземпляр
Temporal.ZonedDateTime, представляющий используемый часовой пояс. Если указана сущностьTemporal.ZonedDateTime, используется её часовой пояс. Если указана строка, она может быть идентификатором именованного часового пояса, идентификатором часового пояса со смещением или строкой даты и времени, содержащей идентификатор часового пояса или смещение (подробнее см. в разделе Часовые пояса и смещения). Свойства времени интерпретируются в этом часовом поясе. -
offsetНеобязательно - Строка смещения в том же формате, что и смещение RFC 9557, но с необязательными компонентами секунд и долей секунды (
±HH:mm:ss.sssssssss), представляющая смещение относительно UTC. Если это свойство не указано, смещение вычисляется на основе часового пояса и даты и времени. Значение"Z"недопустимо.
-
- Экземпляр
-
optionsНеобязательно - Объект, содержащий некоторые или все следующие свойства (в порядке их получения и проверки):
-
disambiguationНеобязательно - Что делать, если локальные дата и время неоднозначны в указанном часовом поясе (существует несколько моментов времени с такими локальными значениями или такого локального времени не существует). Возможные значения:
"compatible","earlier","later"и"reject". По умолчанию используется"compatible". Подробнее об этих значениях см. в разделе Неоднозначность и разрывы при преобразовании локального времени в время UTC. -
offsetНеобязательно - Что делать, если смещение явно указано в
info, но недопустимо для указанного часового пояса и локального времени. Возможные значения:"use","ignore","reject"и"prefer". По умолчанию используется"reject". Подробнее об этих значениях см. в разделе Неоднозначность смещения. -
overflowНеобязательно - Строка, задающая поведение в случае, если компонент даты выходит за допустимый диапазон (при использовании объекта
info). Возможные значения:-
"constrain"(по умолчанию) - Компонент даты ограничивается допустимым диапазоном.
-
"reject" - Если компонент даты выходит за допустимый диапазон, выбрасывается исключение
RangeError.
-
-
Возвращаемое значение
Новый объект Temporal.ZonedDateTime, представляющий дату и время, заданные с помощью info в указанном calendar и timeZone.
Исключения
-
TypeError - Выбрасывается в одном из следующих случаев:
-
infoне является объектом или строкой. -
optionsне является объектом илиundefined. - Указанных свойств недостаточно для однозначного определения даты. Обычно необходимо указать
year(илиeraиeraYear),month(илиmonthCode) иday.
-
-
RangeError - Выбрасывается в одном из следующих случаев:
- Указанные свойства, задающие один и тот же компонент, противоречат друг другу.
- Указанные нечисловые свойства недопустимы; например, если
monthCodeникогда не является допустимым кодом месяца в этом календаре. - Указанные числовые свойства выходят за допустимый диапазон, а для
options.overflowзадано значение"reject". - Настенные часы показывают неоднозначное время в этом часовом поясе, а для
options.disambiguationзадано значение"reject". - Значение info не входит в представимый диапазон: ±108 дней, или примерно ±273 972,6 года от эпохи Unix.
Примеры
Создание ZonedDateTime из объекта
// Year + month + day + hour + minute + second
const zdt = Temporal.ZonedDateTime.from({
timeZone: "America/New_York",
year: 2021,
month: 7,
day: 1,
hour: 12,
minute: 34,
second: 56,
});
console.log(zdt.toString()); // "2021-07-01T12:34:56-04:00[America/New_York]"
Создание ZonedDateTime из строки
const zdt = Temporal.ZonedDateTime.from( "2021-07-01T12:34:56-04:00[America/New_York]", ); console.log(zdt.toLocaleString()); // "7/1/2021, 12:34:56 PM EDT" (assuming en-US locale) // Time given as UTC, and converted to local const zdt2 = Temporal.ZonedDateTime.from( "2021-07-01T12:34:56Z[America/New_York]", ); console.log(zdt2.toString()); // "2021-07-01T08:34:56-04:00[America/New_York]"
Создание ZonedDateTime из строки ISO 8601 / RFC 3339
Обратите внимание, что Temporal.ZonedDateTime.from() отклоняет строки ISO 8601, в которых не указан идентификатор часового пояса. Это гарантирует, что часовой пояс всегда известен и может использоваться для определения различных смещений при изменении локального времени.
Чтобы разобрать строку ISO 8601, сначала создайте объект Temporal.Instant, а затем преобразуйте его в объект Temporal.ZonedDateTime. Можно указать любой часовой пояс, даже если он не соответствует смещению, изначально указанному в строке; локальное время будет скорректировано соответствующим образом.
const isoString = "2021-07-01T12:34:56+02:00";
const instant = Temporal.Instant.from(isoString);
const zdt = instant.toZonedDateTimeISO("America/New_York");
console.log(zdt.toString()); // "2021-07-01T06:34:56-04:00[America/New_York]"
Разрешение неоднозначности локального времени
Введение в эту ситуацию см. в разделе Неоднозначность и разрывы при преобразовании локального времени в время UTC.
const localTimeNotExist = "2024-03-10T02:05:00[America/New_York]";
// For non-existent times, "compatible" is equivalent to "later"
const zdt = Temporal.ZonedDateTime.from(localTimeNotExist);
console.log(zdt.toString()); // "2024-03-10T03:05:00-04:00[America/New_York]"
const zdt2 = Temporal.ZonedDateTime.from(localTimeNotExist, {
disambiguation: "earlier",
});
console.log(zdt2.toString()); // "2024-03-10T01:05:00-05:00[America/New_York]"
const localTimeAmbiguous = "2024-11-03T01:05:00[America/New_York]";
// For ambiguous times, "compatible" is equivalent to "earlier"
const zdt3 = Temporal.ZonedDateTime.from(localTimeAmbiguous);
console.log(zdt3.toString()); // "2024-11-03T01:05:00-04:00[America/New_York]"
const zdt4 = Temporal.ZonedDateTime.from(localTimeAmbiguous, {
disambiguation: "later",
});
console.log(zdt4.toString()); // "2024-11-03T01:05:00-05:00[America/New_York]"
Разрешение неоднозначности смещения
Введение в эту ситуацию см. в разделе Неоднозначность смещения.
const offsetAmbiguous = "2019-12-23T12:00:00-02:00[America/Sao_Paulo]";
Temporal.ZonedDateTime.from(offsetAmbiguous);
// RangeError: date-time can't be represented in the given time zone
Temporal.ZonedDateTime.from(offsetAmbiguous, { offset: "use" }).toString();
// "2019-12-23T11:00:00-03:00[America/Sao_Paulo]"
Temporal.ZonedDateTime.from(offsetAmbiguous, { offset: "ignore" }).toString();
// "2019-12-23T12:00:00-03:00[America/Sao_Paulo]"
Другие примеры, в частности примеры с разными календарями и настройками переполнения, см. в разделах Temporal.PlainDate.from() и Temporal.PlainTime.from().
Спецификации
| Спецификация |
|---|
| Temporal # sec-temporal.zoneddatetime.from |
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
from |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/from