Temporal.PlainYearMonth.from()
Базовый стандарт Ограниченная доступность
Эта функция не является базовым стандартом, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Статический метод Temporal.PlainYearMonth.from() создает новый объект Temporal.PlainYearMonth из другого объекта Temporal.PlainYearMonth, объекта со свойствами года и месяца или строки RFC 9557.
Синтаксис
Temporal.PlainYearMonth.from(info) Temporal.PlainYearMonth.from(info, options)
Параметры
-
info - Одно из следующих:
- Экземпляр
Temporal.PlainYearMonth, который создает копию экземпляра. - Строка RFC 9557, содержащая дату и, возможно, календарь. Если календарь не является
iso8601, требуется день. - Объект, содержащий следующие свойства (в порядке их получения и проверки):
-
calendarНеобязательно - Строка, соответствующая свойству
calendarId. См.Intl.supportedValuesOf()для списка обычно поддерживаемых типов календарей. По умолчанию"iso8601". Все остальные свойства интерпретируются в этой системе календаря (в отличие от конструктораTemporal.PlainYearMonth(), который интерпретирует значения в системе календаря ISO). -
eraиeraYear - Строка и целое число, соответствующие свойствам
eraиeraYear. Используются только в том случае, если в системе календаря есть эры.eraиeraYearдолжны быть предоставлены одновременно. Если они не предоставлены, то должно быть предоставленоyear. Если предоставлены всеera,eraYearиyear, они должны быть согласованы. -
month - Соответствует свойству
month. Должно быть положительным независимо от опцииoverflow. -
monthCode - Соответствует свойству
monthCode. Если оно не предоставлено, то должно быть предоставленоmonth. Если предоставленыmonthиmonthCode, они должны быть согласованы. -
year - Соответствует свойству
year.
-
- Экземпляр
-
optionsНеобязательно - Объект, содержащий следующее свойство:
-
overflowНеобязательно - Строка, определяющая поведение, когда компонент даты выходит за пределы допустимого диапазона (при использовании объекта
info). Возможные значения:-
"constrain"(по умолчанию) - Компонент даты ограничивается допустимым диапазоном.
-
"reject" - Будет выброшено исключение
RangeError, если компонент даты выходит за пределы допустимого диапазона.
-
-
Возвращаемое значение
Новый объект Temporal.PlainYearMonth, представляющий год и месяц, указанные info в указанном calendar.
Каждый PlainYearMonth внутренне хранит полную дату ISO 8601, которая имеет тот же год и месяц в целевом календаре, что и отображаемый. Референтный день виден при преобразовании в строку с помощью toString(), который выводит дату ISO. Референтный день выбирается произвольно, но последовательно; то есть каждая пара (year, month) всегда соответствует одному и тому же референтному дню ISO. Он не использует день, указанный во входных данных. Вместо этого референтный день всегда выбирается как первый допустимый день месяца.
Эта канонизация референтного дня гарантирует, что equals() может напрямую сравнивать внутренние даты ISO без дополнительных вычислений.
Исключения
-
TypeError - Выбрасывается в одном из следующих случаев:
-
infoне является объектом или строкой. -
optionsне является объектом илиundefined. - Предоставленных свойства недостаточно для однозначного определения даты. Обычно необходимо предоставить
year(илиeraиeraYear) иmonth(илиmonthCode).
-
-
RangeError - Выбрасывается в одном из следующих случаев:
- Предоставленные свойства, определяющие один и тот же компонент, не согласованы.
- Предоставленные нечисловые свойства недействительны; например, если
monthCodeникогда не является допустимым кодом месяца в этом календаре. - Предоставленные числовые свойства выходят за пределы допустимого диапазона, и
options.overflowустановлен в"reject". - Информация выходит за пределы представимого диапазона, который составляет ±(108 + 1) дней, или примерно ±273 972,6 лет от эпохи Unix.
Примеры
Создание PlainYearMonth из объекта
// Year + month code
const ym = Temporal.PlainYearMonth.from({ year: 2021, monthCode: "M05" });
console.log(ym.toString()); // 2021-05
// Year + month
const ym2 = Temporal.PlainYearMonth.from({ year: 2021, month: 7 });
console.log(ym2.toString()); // 2021-07
// Year + month in a different calendar
const ym3 = Temporal.PlainYearMonth.from({
year: 5730,
month: 6,
calendar: "hebrew",
});
console.log(ym3.toString()); // 1970-02-07[u-ca=hebrew]
// Year + month code in a different calendar
const ym4 = Temporal.PlainYearMonth.from({
year: 5730,
monthCode: "M05L",
calendar: "hebrew",
});
console.log(ym4.toString()); // 1970-02-07[u-ca=hebrew]
Управление поведением переполнения
По умолчанию значения вне допустимого диапазона обрезаются до допустимого диапазона.
const ym1 = Temporal.PlainYearMonth.from({ year: 2021, month: 13 });
console.log(ym1.toString()); // 2021-12
// 5732 is not a Hebrew leap year, so a different monthCode is chosen
const ym2 = Temporal.PlainYearMonth.from({
year: 5732,
monthCode: "M05L",
calendar: "hebrew",
});
console.log(ym2.toLocaleString("en-US", { calendar: "hebrew" })); // Adar 5732
const underlyingDate = Temporal.PlainDate.from(ym2.toString());
console.log(underlyingDate.year, underlyingDate.monthCode); // 5732 M06
Вы можете изменить это поведение, чтобы вместо этого выбрасывалось исключение:
Temporal.PlainYearMonth.from({ year: 2021, month: 13 }, { overflow: "reject" });
// RangeError: date value "month" not in 1..12: 13
Спецификации
| Спецификация |
|---|
| Temporal # sec-temporal.plainyearmonth.from |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
from |
144 |
144 |
139 |
128 |
preview |
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/PlainYearMonth/from