Spec-Zone.ru › JavaScript

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

См. также

  • Temporal.PlainYearMonth
  • Temporal.PlainYearMonth()
  • Temporal.PlainYearMonth.prototype.with()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API