Spec-Zone.ru › JavaScript

Temporal.PlainDate.from()

Baseline Ограниченная доступность

Эта функция не является Baseline, поскольку она не работает в некоторых из наиболее широко используемых браузеров.

Статический метод Temporal.PlainDate.from() создает новый объект Temporal.PlainDate из другого объекта Temporal.PlainDate, объекта со свойствами даты или строки RFC 9557.

Синтаксис

Temporal.PlainDate.from(info)
Temporal.PlainDate.from(info, options)

Параметры

info
Одна из следующих опций:
  • Экземпляр Temporal.PlainDate, который создает копию экземпляра.
  • Экземпляр Temporal.PlainDateTime, который предоставляет календарную дату таким же образом, как Temporal.PlainDateTime.prototype.toPlainDate().
  • Экземпляр Temporal.ZonedDateTime, который предоставляет календарную дату таким же образом, как Temporal.ZonedDateTime.prototype.toPlainDate().
  • Строка RFC 9557, содержащая дату и, возможно, календарь.
  • Объект, содержащий следующие свойства (в порядке их получения и проверки):
    calendar Необязательно
    Строка, соответствующая свойству calendarId. См. Intl.supportedValuesOf() для списка часто поддерживаемых типов календарей. По умолчанию "iso8601". Все остальные свойства интерпретируются в этой календарной системе (в отличие от конструктора Temporal.PlainDate(), который интерпретирует значения в системе календаря ISO).
    day
    Целое число, соответствующее свойству day. Должно быть положительным независимо от параметра overflow.
    era и eraYear
    Строка и целое число, соответствующие свойствам era и eraYear. Используются только в том случае, если календарная система имеет эры. era и eraYear должны быть предоставлены одновременно. Должно быть предоставлено по крайней мере одно из eraYear (вместе с era) или year. Если предоставлены все era, eraYear и year, они должны быть согласованы.
    month
    Соответствует свойству month. Должно быть положительным независимо от параметра overflow. Должно быть предоставлено по крайней мере одно из month или monthCode. Если предоставлены оба month и monthCode, они должны быть согласованы.
    monthCode
    Соответствует свойству monthCode. Должно быть предоставлено по крайней мере одно из month или monthCode. Если предоставлены оба month и monthCode, они должны быть согласованы.
    year
    Соответствует свойству year. Должно быть предоставлено по крайней мере одно из eraYear (вместе с era) или year. Если предоставлены все era, eraYear и year, они должны быть согласованы.

    Параметр info должен явно указывать год (как year или era и eraYear), месяц (как month или monthCode) и день.

options Необязательно
Объект, содержащий следующее свойство:
overflow Необязательно
Строка, указывающая поведение при выходе компонента даты за пределы допустимого диапазона (при использовании объекта info). Возможные значения:
"constrain" (по умолчанию)
Компонент даты ограничивается допустимым диапазоном.
"reject"
Будет выброшено RangeError, если компонент даты выходит за пределы допустимого диапазона.

Возвращаемое значение

Новый объект Temporal.PlainDate, представляющий дату, указанную info в указанном calendar.

Исключения

TypeError
Выбрасывается в одном из следующих случаев:
  • info не является объектом или строкой.
  • options не является объектом или undefined.
  • Предоставленных свойства недостаточно для однозначного определения даты. Обычно необходимо предоставить year (или era и eraYear), month (или monthCode) и day.
RangeError
Выбрасывается в одном из следующих случаев:
  • Предоставленные свойства, определяющие один и тот же компонент, не согласованы.
  • Предоставленные нечисловые свойства недействительны; например, если monthCode никогда не является допустимым кодом месяца в этом календаре.
  • Предоставленные числовые свойства выходят за пределы допустимого диапазона, и options.overflow установлено в "reject".
  • Дата не входит в представимый диапазон, который составляет ±(108 + 1) дней, или около ±273 972,6 лет от Unix epoch.

Примеры

Создание PlainDate из объекта

// Year, month, and day
const d1 = Temporal.PlainDate.from({ year: 2021, month: 7, day: 1 });
console.log(d1.toString()); // "2021-07-01"

// Year, month code, and day
const d2 = Temporal.PlainDate.from({ year: 2021, monthCode: "M07", day: 1 });
console.log(d2.toString()); // "2021-07-01"

// Year, month, day in a different calendar
const d3 = Temporal.PlainDate.from({
  year: 2021,
  month: 7,
  day: 1,
  calendar: "hebrew",
});
// Note: when you construct a date with an object, the date components
// are in *that* calendar, not the ISO calendar. However, toString() always
// outputs the date in the ISO calendar. For example, the year "2021" in
// the Hebrew calendar is actually 1740 BCE in the ISO calendar.
console.log(d3.toString()); // "-001739-03-07[u-ca=hebrew]"

// Era, eraYear, month, and day
const d4 = Temporal.PlainDate.from({
  era: "meiji",
  eraYear: 4,
  month: 7,
  day: 1,
  calendar: "japanese",
});
console.log(d4.toString()); // "1871-07-01[u-ca=japanese]"

Управление поведением при выходе за пределы диапазона

По умолчанию значения вне допустимого диапазона ограничиваются допустимым диапазоном:

const d1 = Temporal.PlainDate.from({ year: 2021, month: 13, day: 1 });
console.log(d1.toString()); // "2021-12-01"

const d2 = Temporal.PlainDate.from({ year: 2021, month: 2, day: 29 });
console.log(d2.toString()); // "2021-02-28"

const d3 = Temporal.PlainDate.from("2021-02-29");
console.log(d3.toString()); // "2021-02-28"

Вы можете изменить это поведение, чтобы вместо этого генерировать ошибку:

const d3 = Temporal.PlainDate.from(
  { year: 2021, month: 13, day: 1 },
  { overflow: "reject" },
);
// RangeError: date value "month" not in 1..12: 13

Создание PlainDate из строки

const d = Temporal.PlainDate.from("2021-07-01");
console.log(d.toLocaleString("en-US", { dateStyle: "full" }));
// Thursday, July 1, 2021

// Providing a calendar
const d2 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
console.log(
  d2.toLocaleString("ja-JP", { calendar: "japanese", dateStyle: "full" }),
);
// 令和3年7月1日木曜日

// Providing a time and an offset (ignored)
const d3 = Temporal.PlainDate.from("2021-07-01T00:00+08:00");
console.log(d3.toString()); // "2021-07-01"

Создание PlainDate из другого экземпляра Temporal

const dt = Temporal.PlainDateTime.from("2021-07-01T12:00");
const d = Temporal.PlainDate.from(dt);
console.log(d.toString()); // "2021-07-01"

const zdt = Temporal.ZonedDateTime.from(
  "2021-07-01T00:00+08:00[Asia/Shanghai]",
);
const d2 = Temporal.PlainDate.from(zdt);
console.log(d2.toString()); // "2021-07-01"

const d3 = Temporal.PlainDate.from(d);
console.log(d3.toString()); // "2021-07-01"

Спецификации

Спецификация
Temporal
# sec-temporal.plaindate.from

Совместимость с браузерами

Desktop Mobile Server
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
No
No
144
No
1.4.0
2.7
26.0.0

См. также

  • Temporal.PlainDate
  • Temporal.PlainDate()
  • Temporal.PlainDate.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/PlainDate/from

Spec-Zone.ru

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