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 den Tag eines Kalenderdatums, ohne Jahr oder Zeitzone; zum Beispiel ein jährlich wiederkehrendes Ereignis, das den ganzen Tag dauert. Es wird grundsätzlich als ISO 8601-Kalenderdatum mit Jahr, Monat und Tagesfeldern sowie einem zugehörigen Kalendersystem dargestellt. Das Jahr wird verwendet, um den Monat-Tag in nicht-ISO-Kalendersystemen zu unterscheiden.
Beschreibung
Ein PlainMonthDay
ist im Wesentlichen der Monat-Tag-Teil eines Temporal.PlainDate
-Objekts, ohne das Jahr. Da sich die Bedeutung eines Monat-Tags von Jahr zu Jahr ändern kann (zum Beispiel, ob er existiert oder welcher Monat-Tag der nächste Tag ist), bietet dieses Objekt nicht viel Funktionalität für sich, wie Vergleich, Addition oder Subtraktion. Es hat nicht einmal eine month
-Eigenschaft, da der Monatsindex ohne Jahr keine Bedeutung hat (zum Beispiel können zwei Monate aus zwei Jahren mit demselben Index unterschiedliche Namen haben, im Falle von Schaltmonaten).
RFC 9557-Format
PlainMonthDay
-Objekte können im RFC 9557-Format, einer Erweiterung des ISO 8601 / RFC 3339-Formats, serialisiert und geparst werden. Der String hat folgende Form (Leerzeichen sind nur für die Lesbarkeit 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 für nicht-ISO-Kalender erforderlich und ansonsten optional. Wenn weggelassen, können Sie entwederYYYY-
mit--
ersetzen (sodass der String aussieht wie--MM-DD
oder--MMDD
), oder denYYYY-
-Teil ganz weglassen (sodass der String aussieht wieMM-DD
oderMMDD
). Beachten Sie, dass sich das tatsächlich gespeicherte Referenzjahr von dem von Ihnen angegebenen unterscheiden kann, aber der dargestellte Monat-Tag derselbe ist. Weitere Informationen finden Sie unterTemporal.PlainMonthDay.from()
. MM
-
Eine zweistellige Zahl von
01
bis12
. DD
-
Eine zweistellige Zahl von
01
bis31
. Die KomponentenYYYY
,MM
undDD
können durch-
oder nichts getrennt werden. [u-ca=calendar_id]
Optional-
Ersetzen Sie
calendar_id
durch den zu verwendenden Kalender. SieheIntl.supportedValuesOf()
für eine Liste der häufig unterstützten Kalendertypen. Standardmäßig[u-ca=iso8601]
. Kann ein kritisches Flag haben, indem der Schlüssel mit!
vorangestellt wird: z.B.[!u-ca=iso8601]
. Dieses Flag teilt im Allgemeinen anderen Systemen mit, dass es nicht ignoriert werden kann, wenn sie es nicht unterstützen. DerTemporal
-Parser wird einen Fehler auslösen, wenn die Anmerkungen zwei oder mehr Kalenderanmerkungen enthalten und eine davon kritisch ist. Beachten Sie, dassYYYY-MM-DD
immer als ISO 8601-Kalenderdatum interpretiert und dann in den angegebenen Kalender konvertiert wird.
Als Eingabe können Sie optional die Zeit, den Offset und den Zeitzonenbezeichner im gleichen Format wie PlainDateTime
einbeziehen, aber sie werden ignoriert. Andere Anmerkungen im [key=value]
-Format werden ebenfalls ignoriert und dürfen kein kritisches Flag haben.
Bei der Serialisierung 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 angegeben werden.
Statische Methoden
Temporal.PlainMonthDay.from()
Experimentell-
Erstellt ein neues
Temporal.PlainMonthDay
-Objekt aus einem anderenTemporal.PlainMonthDay
-Objekt, einem Objekt mit Monat- und Tag-Eigenschaften oder einem RFC 9557-String.
Instanzeigenschaften
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 verwendet wird, um das interne ISO 8601-Datum zu interpretieren.
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 Tag-Index im Monat dieses Datums darstellt, der dieselbe Tagesnummer ist, die Sie in einem Kalender sehen würden. [Kalender]-abhängig. Beginnt in der Regel bei 1 und ist durchgehend, aber nicht immer.
Temporal.PlainMonthDay.prototype.monthCode
Experimentell-
Gibt einen kalenderspezifischen String zurück, der den Monat dieses Datums darstellt. [Kalender]-abhängig. Üblicherweise ist es
M
plus eine zweistellige Monatszahl. Für Schaltmonate ist es der Code des vorherigen Monats gefolgt vonL
. Wenn der Schaltmonat der erste Monat des Jahres ist, lautet 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.
Instanzmethoden
Temporal.PlainMonthDay.prototype.equals()
Experimentell-
Gibt
true
zurück, wenn dieser Monat-Tag in Wert einem anderen Monat-Tag (in einer Form, die durchTemporal.PlainMonthDay.from()
konvertierbar ist) entspricht, undfalse
anderenfalls. 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 gleichen RFC 9557-Format wie bei einem Aufruf von
toString()
darstellt. Soll implizit durchJSON.stringify()
aufgerufen werden. Temporal.PlainMonthDay.prototype.toLocaleString()
Experimentell-
Gibt einen String mit einer sprachensensitiven 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 gleichen Kalendersystem darstellt. Temporal.PlainMonthDay.prototype.toString()
Experimentell-
Gibt einen String zurück, der diesen Monat-Tag im RFC 9557-Format repräsentiert.
Temporal.PlainMonthDay.prototype.valueOf()
Experimentell-
Wirft einen
TypeError
, der verhindert, dassTemporal.PlainMonthDay
-Instanzen implizit in Primitive konvertiert 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
Das nächste Vorkommen 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 # sec-temporal-plainmonthday-objects |