Temporal.PlainMonthDay
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.
Das Temporal.PlainMonthDay
-Objekt repräsentiert den Monat und Tag eines Kalendertages, ohne Jahr oder Zeitzone; zum Beispiel ein Ereignis in einem Kalender, das jedes Jahr wiederkehrt und den ganzen Tag andauert. Es wird grundsätzlich als ISO 8601-Kalendertag mit Jahr, Monat und Tag sowie einem zugehörigen Kalendersystem dargestellt. Das Jahr wird verwendet, um den Monat-Tag in nicht-ISO-Kalendersystemen zu entwirren.
Beschreibung
Ein PlainMonthDay
ist im Wesentlichen der Monat-Tag-Teil eines Temporal.PlainDate
-Objekts, ohne das Jahr. Da die Bedeutung eines Monats-Tages von Jahr zu Jahr variieren kann (zum Beispiel, ob er existiert oder welcher Monat-Tag der nächste Tag ist), bietet dieses Objekt alleine nicht viel Funktionalität wie Vergleich, Addition oder Subtraktion. Es hat nicht einmal eine month
-Eigenschaft, da der Monatsindex ohne ein Jahr nicht sinnvoll ist (zum Beispiel können zwei Monate aus zwei Jahren mit demselben Index unterschiedliche Namen im Fall von Schaltmonaten haben).
RFC 9557 Format
PlainMonthDay
-Objekte können im RFC 9557-Format serialisiert und geparst werden, eine Erweiterung des ISO 8601 / RFC 3339-Formats. Der String hat folgendes Format (Leerzeichen sind nur der Lesbarkeit wegen da und sollten im eigentlichen String nicht vorhanden sein):
YYYY-MM-DD [u-ca=calendar_id]
YYYY
Optional-
Entweder eine vierstellige Zahl oder eine sechsstellige Zahl mit einem
+
oder-
Zeichen. Es ist notwendig für nicht-ISO-Kalender und ansonsten optional. Wird es weggelassen, können Sie entwederYYYY-
durch--
ersetzen (sodass der String wie--MM-DD
oder--MMDD
aussieht) oder denYYYY-
-Teil ganz weglassen (sodass der String wieMM-DD
oderMMDD
aussieht). Beachten Sie, dass das tatsächlich gespeicherte Referenzjahr von dem abweichen kann, das Sie angeben, aber der dargestellte Monat-Tag derselbe ist.Temporal.PlainMonthDay.from()
bietet mehr Informationen dazu. MM
-
Eine zweistellige Zahl von
01
bis12
. DD
-
Eine zweistellige Zahl von
01
bis31
. DieYYYY
,MM
undDD
Komponenten können durch-
getrennt sein oder direkt zusammengeschrieben werden. [u-ca=calendar_id]
Optional-
Ersetzen Sie
calendar_id
durch den zu verwendenden Kalender. SieheIntl.supportedValuesOf()
für eine Liste allgemein unterstützter Kalendertypen. Standard ist[u-ca=iso8601]
. Kann ein kritisches Flag haben, indem das Schlüsselwort mit!
vorangestellt wird, z.B.[!u-ca=iso8601]
. Dieses Flag weist andere Systeme normalerweise darauf hin, dass es nicht ignoriert werden kann, wenn sie es nicht unterstützen. DerTemporal
-Parser wirft einen Fehler, wenn die Annotationen zwei oder mehr Kalenderanmerkungen enthalten und eine davon kritisch ist. Beachten Sie, dassYYYY-MM-DD
immer als ISO 8601-Kalendertag interpretiert und dann in den angegebenen Kalender konvertiert wird.
Als Eingabe können Sie optional die Zeit, den Offset und die Zeitzonenkennung im selben Format wie PlainDateTime
einschließen, aber sie werden ignoriert. Andere Annotationen im [key=value]
Format werden ebenfalls ignoriert und dürfen das kritische Flag nicht haben.
Beim Serialisieren können Sie konfigurieren, ob die Kalender-ID angezeigt werden soll und ob ein kritisches Flag dafür hinzugefügt werden soll.
Konstruktor
Temporal.PlainMonthDay()
Experimentell-
Erstellt ein neues
Temporal.PlainMonthDay
-Objekt, indem die zugrunde liegenden Daten direkt bereitgestellt werden.
Statische Methoden
Temporal.PlainMonthDay.from()
Experimentell-
Erstellt ein neues
Temporal.PlainMonthDay
-Objekt aus einem anderenTemporal.PlainMonthDay
-Objekt, einem Objekt mit Monats- und Tageigenschaften oder einem RFC 9557-String.
Instanz-Eigenschaften
Diese Eigenschaften sind auf Temporal.PlainMonthDay.prototype
definiert und werden von allen Temporal.PlainMonthDay
-Instanzen geteilt.
Temporal.PlainMonthDay.prototype.calendarId
Experimentell-
Gibt einen String zurück, der den Kalender repräsentiert, der zur Interpretation des internen ISO 8601-Datums verwendet wird.
Temporal.PlainMonthDay.prototype.constructor
-
Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. Für
Temporal.PlainMonthDay
-Instanzen ist der Anfangswert derTemporal.PlainMonthDay()
-Konstruktor. Temporal.PlainMonthDay.prototype.day
Experimentell-
Gibt eine positive Ganzzahl zurück, die den 1-basierten Tagesindex des Monats dieses Datums darstellt, derselbe Tag, den Sie in einem Kalender sehen würden. Abhängig vom Kalender. Beginnt normalerweise bei 1 und ist fortlaufend, aber nicht immer.
Temporal.PlainMonthDay.prototype.monthCode
Experimentell-
Gibt einen kalenderabhängigen String zurück, der den Monat dieses Datums repräsentiert. Abhängig vom Kalender. Normalerweise ist es
M
plus eine zweistellige Monatszahl. Für Schaltmonate ist es der Code des vorhergehenden Monats, gefolgt vonL
. Wenn der Schaltmonat der erste Monat des Jahres ist, ist der CodeM00L
. Temporal.PlainMonthDay.prototype[Symbol.toStringTag]
-
Der Anfangswert der
[Symbol.toStringTag]
-Eigenschaft ist der String"Temporal.PlainMonthDay"
. Diese Eigenschaft wird inObject.prototype.toString()
verwendet.
Instanz-Methoden
Temporal.PlainMonthDay.prototype.equals()
Experimentell-
Gibt
true
zurück, wenn dieser Monat-Tag in Bezug auf einen anderen Monat-Tag gleichwertig ist (in einer Form, die durchTemporal.PlainMonthDay.from()
konvertierbar ist) undfalse
sonst. Sie werden sowohl nach ihren Datumswerten als auch nach ihren Kalendern verglichen. Temporal.PlainMonthDay.prototype.toJSON()
Experimentell-
Gibt einen String zurück, der diesen Monat-Tag im selben RFC 9557 Format darstellt, wie es das Aufrufen von
toString()
würde. Soll implizit durchJSON.stringify()
aufgerufen werden. Temporal.PlainMonthDay.prototype.toLocaleString()
Experimentell-
Gibt einen String mit einer sprachsensitiven Darstellung dieses Monat-Tags zurück.
Temporal.PlainMonthDay.prototype.toPlainDate()
Experimentell-
Gibt ein neues
Temporal.PlainDate
-Objekt zurück, das diesen Monat-Tag und ein angegebenes Jahr im selben Kalendersystem darstellt. Temporal.PlainMonthDay.prototype.toString()
Experimentell-
Gibt einen String zurück, der diesen Monat-Tag im RFC 9557 Format darstellt.
Temporal.PlainMonthDay.prototype.valueOf()
Experimentell-
Wirft einen
TypeError
, der verhindert, dassTemporal.PlainMonthDay
-Instanzen implizit in primitive Werte umgewandelt werden, wenn sie in arithmetischen oder Vergleichsoperationen verwendet werden. Temporal.PlainMonthDay.prototype.with()
Experimentell-
Gibt ein neues
Temporal.PlainMonthDay
-Objekt zurück, das diesen Monat-Tag mit einigen durch neue Werte ersetzten Feldern darstellt.
Beispiele
Den nächsten Termin eines Festes ermitteln
// Chinese New Years are on 1/1 in the Chinese calendar
const chineseNewYear = Temporal.PlainMonthDay.from({
monthCode: "M01",
day: 1,
calendar: "chinese",
});
const currentYear = Temporal.Now.plainDateISO().withCalendar("chinese").year;
let nextCNY = chineseNewYear.toPlainDate({ year: currentYear });
if (Temporal.PlainDate.compare(nextCNY, Temporal.Now.plainDateISO()) <= 0) {
nextCNY = nextCNY.add({ years: 1 });
}
console.log(
`The next Chinese New Year is on ${nextCNY.withCalendar("iso8601").toLocaleString()}`,
);
Spezifikationen
Specification |
---|
Temporal proposal # sec-temporal-plainmonthday-objects |