Temporal.PlainYearMonth.from()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Temporal.PlainYearMonth.from()
statische Methode erstellt ein neues Temporal.PlainYearMonth
Objekt aus einem anderen Temporal.PlainYearMonth
Objekt, einem Objekt mit den Eigenschaften Jahr und Monat, oder einem RFC 9557 String.
Syntax
Temporal.PlainYearMonth.from(info)
Temporal.PlainYearMonth.from(info, options)
Parameter
info
-
Eines der folgenden:
- Eine
Temporal.PlainYearMonth
Instanz, die eine Kopie der Instanz erstellt. - Ein RFC 9557 String, der ein Datum und optional einen Kalender enthält. Wenn der Kalender nicht
iso8601
ist, ist ein Tag erforderlich. - Ein Objekt, das die folgenden Eigenschaften enthält (in der Reihenfolge, in der sie abgerufen und validiert werden):
calendar
Optional-
Ein String, der der
calendarId
Eigenschaft entspricht. Standardmäßig"iso8601"
. Alle anderen Eigenschaften werden in diesem Kalendersystem interpretiert (im Gegensatz zumTemporal.PlainYearMonth()
Konstruktor, der die Werte im ISO-Kalendersystem interpretiert). era
underaYear
-
Ein String und eine Ganzzahl, die den
era
underaYear
Eigenschaften entsprechen. Werden nur verwendet, wenn das Kalendersystem Epochen hat.era
underaYear
müssen gleichzeitig angegeben werden. Wenn sie nicht angegeben sind, mussyear
angegeben sein. Wennera
,eraYear
undyear
alle angegeben sind, müssen sie konsistent sein. month
-
Entspricht der
month
Eigenschaft. Muss positiv sein, unabhängig von deroverflow
Option. monthCode
-
Entspricht dem
monthCode
. Wenn es nicht angegeben ist, mussmonth
angegeben werden. Wenn sowohlmonth
als auchmonthCode
angegeben sind, müssen sie konsistent sein. year
-
Entspricht der
year
Eigenschaft.
- Eine
options
Optional-
Ein Objekt, das die folgende Eigenschaft enthält:
overflow
Optional-
Ein String, der das Verhalten angibt, wenn ein Datumsbestandteil außerhalb des Bereichs liegt (bei Verwendung des Objekts
info
). Mögliche Werte sind:"constrain"
(Standard)-
Der Datumsbestandteil wird auf den gültigen Bereich gekappt.
"reject"
-
Ein
RangeError
wird ausgelöst, wenn der Datumsbestandteil außerhalb des Bereichs liegt.
Rückgabewert
Ein neues Temporal.PlainYearMonth
Objekt, das das Jahr und den Monat darstellt, die durch info
im angegebenen calendar
festgelegt sind.
Jeder PlainYearMonth
speichert intern ein komplettes ISO 8601 Datum, das dasselbe Jahr-Monat im Zielkalender hat, wie es angezeigt wird. Der Referenztag ist beim Serialisieren mit toString()
sichtbar, das ein ISO-Datum ausgibt. Der Referenztag wird willkürlich, aber konsistent gewählt, das heißt, jedes (year, month)
Paar wird immer auf denselben ISO-Referenztag abgebildet. Er verwendet nicht den in der Eingabe angegebenen Tag. Stattdessen wird der Referenztag immer als der erste gültige Tag des Monats gewählt.
Diese Referenztag-Kanalisierung sorgt dafür, dass equals()
die zugrunde liegenden ISO-Daten direkt vergleichen kann, ohne zusätzliche Berechnungen.
Ausnahmen
TypeError
-
In einem der folgenden Fälle ausgelöst:
info
ist kein Objekt oder String.options
ist kein Objekt oderundefined
.- Die bereitgestellten Eigenschaften sind unzureichend, um ein Datum eindeutig zu bestimmen. Normalerweise müssen Sie ein
year
(oderera
underaYear
) sowie einenmonth
(oder einenmonthCode
) angeben.
RangeError
-
In einem der folgenden Fälle ausgelöst:
- Die bereitgestellten Eigenschaften, die dieselbe Komponente spezifizieren, sind inkonsistent.
- Die bereitgestellten nicht-numerischen Eigenschaften sind nicht gültig; zum Beispiel, wenn
monthCode
nie ein gültiger Monatscode in diesem Kalender ist. - Die bereitgestellten numerischen Eigenschaften liegen außerhalb des Bereichs und
options.overflow
ist auf"reject"
gesetzt.
Beispiele
Erstellen eines PlainYearMonth aus einem Objekt
// 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]
Steuerung des Überlaufverhaltens
Standardmäßig werden Werte außerhalb des Bereichs auf den gültigen Bereich gekappt.
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
Sie können dieses Verhalten ändern, um stattdessen einen Fehler auszulösen:
Temporal.PlainYearMonth.from({ year: 2021, month: 13 }, { overflow: "reject" });
// RangeError: date value "month" not in 1..12: 13
Spezifikationen
Specification |
---|
Temporal proposal # sec-temporal.plainyearmonth.from |
Browser-Kompatibilität
BCD tables only load in the browser