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 statische Methode Temporal.PlainYearMonth.from() erstellt ein neues Temporal.PlainYearMonth Objekt aus einem anderen Temporal.PlainYearMonth Objekt, einem Objekt mit Jahr- und Monatseigenschaften oder einem RFC 9557 String.

Syntax

js
Temporal.PlainYearMonth.from(info)
Temporal.PlainYearMonth.from(info, options)

Parameter

info

Einer der folgenden:

  • Eine Temporal.PlainYearMonth Instanz, was eine Kopie der Instanz erstellt.
  • Ein RFC 9557 String, der ein Datum enthält und optional einen Kalender. Wenn der Kalender nicht iso8601 ist, ist ein Tag erforderlich.
  • Ein Objekt, das folgende Eigenschaften enthält (in der Reihenfolge, in der sie abgerufen und validiert werden):
    calendar Optional

    Ein String, der der calendarId Eigenschaft entspricht. Siehe Intl.supportedValuesOf() für eine Liste der häufig unterstützten Kalendertypen. Standard ist "iso8601". Alle anderen Eigenschaften werden in diesem Kalendersystem interpretiert (im Gegensatz zum Temporal.PlainYearMonth() Konstruktor, der die Werte im ISO-Kalendersystem interpretiert).

    era und eraYear

    Ein String und eine Ganzzahl, die den era und eraYear Eigenschaften entsprechen. Werden nur verwendet, wenn das Kalendersystem Epochen hat. era und eraYear müssen gleichzeitig bereitgestellt werden. Wenn sie nicht bereitgestellt werden, muss year angegeben werden. Wenn alle era, eraYear und year angegeben sind, müssen sie konsistent sein.

    month

    Entspricht der month Eigenschaft. Muss positiv sein, unabhängig von der overflow Option.

    monthCode

    Entspricht der monthCode Eigenschaft. Wenn es nicht angegeben ist, muss month bereitgestellt werden. Wenn sowohl month als auch monthCode bereitgestellt werden, müssen sie konsistent sein.

    year

    Entspricht der year Eigenschaft.

options Optional

Ein Objekt, das die folgende Eigenschaft enthält:

overflow Optional

Ein String, der das Verhalten angibt, wenn eine Datenkomponente außerhalb des Bereichs liegt (bei Verwendung des Objekts info). Mögliche Werte sind:

"constrain" (Standard)

Die Datenkomponente wird auf den gültigen Bereich begrenzt.

"reject"

Ein RangeError wird ausgelöst, wenn die Datenkomponente außerhalb des Bereichs liegt.

Rückgabewert

Ein neues Temporal.PlainYearMonth Objekt, das das Jahr und den Monat repräsentiert, die von info im angegebenen calendar angegeben sind.

Jedes PlainYearMonth speichert intern ein vollständiges ISO 8601 Datum, das dasselbe Jahr-Monat im Zielkalender hat wie das, was angezeigt wird. Der Referenztag ist sichtbar, wenn er mit toString() in einen String umgewandelt wird, der ein ISO-Datum ausgibt. Der Referenztag wird willkürlich, aber konsistent gewählt; das heißt, jedes (year, month) Paar wird immer demselben ISO-Referenztag zugeordnet. Der in der Eingabe angegebene Tag wird nicht verwendet. Stattdessen wird der Referenztag immer als der erste gültige Tag des Monats gewählt.

Diese Referenztage-Kanonisierung stellt sicher, dass equals() die zugrunde liegenden ISO-Daten ohne zusätzliche Berechnungen direkt vergleichen kann.

Ausnahmen

TypeError

Wird in einem der folgenden Fälle ausgelöst:

  • info ist kein Objekt oder kein String.
  • options ist kein Objekt oder undefined.
  • Die bereitgestellten Eigenschaften sind nicht ausreichend, um ein Datum eindeutig zu bestimmen. Normalerweise müssen year (oder era und eraYear) und month (oder ein monthCode) bereitgestellt werden.
RangeError

Wird in einem der folgenden Fälle ausgelöst:

  • Die bereitgestellten Eigenschaften, die dieselbe Komponente spezifizieren, sind inkonsistent.
  • Die bereitgestellten nicht-zahlreichen Eigenschaften sind ungültig; zum Beispiel, wenn monthCode nie ein gültiger Monatscode in diesem Kalender ist.
  • Die bereitgestellten zahlreichen Eigenschaften sind außerhalb des Bereichs, und options.overflow ist auf "reject" gesetzt.
  • Die Information liegt nicht im darstellbaren Bereich, der ±(108 + 1) Tage oder ungefähr ±273.972,6 Jahre ab dem Unix-Epoch umfasst.

Beispiele

Erstellen eines PlainYearMonth aus einem Objekt

js
// 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 begrenzt.

js
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:

js
Temporal.PlainYearMonth.from({ year: 2021, month: 13 }, { overflow: "reject" });
// RangeError: date value "month" not in 1..12: 13

Spezifikationen

Specification
Temporal
# sec-temporal.plainyearmonth.from

Browser-Kompatibilität

Siehe auch