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 Kalendertages, ohne ein Jahr oder eine Zeitzone; beispielsweise ein Ereignis im Kalender, das jedes Jahr wiederkehrt und über den gesamten Tag stattfindet. Es wird grundsätzlich als ein ISO 8601 Kalendertag mit Jahr-, Monat- und Tagesfeldern und 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 die Bedeutung eines Monats-Tages je nach Jahr variieren kann (zum Beispiel, ob er existiert, oder welcher Monat-Tag der nächste Tag ist), bietet dieses Objekt von sich aus 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 haben, im Falle von Schaltmonaten).
RFC 9557 Format
PlainMonthDay
Objekte können im RFC 9557 Format serialisiert und geparst werden, einer Erweiterung des ISO 8601 / RFC 3339 Formats. Der String hat die folgende Form (Leerzeichen sind nur zur Lesbarkeit und sollten im tatsächlichen String nicht enthalten sein):
YYYY-MM-DD [u-ca=calendar_id]
YYYY
Optional-
Entweder eine vierstellige Zahl oder eine sechsstellige Zahl mit einem
+
oder-
Zeichen. Es ist erforderlich für nicht-ISO-Kalender und optional ansonsten. Wird es weggelassen, können Sie entwederYYYY-
durch--
ersetzen (so dass der String wie--MM-DD
oder--MMDD
aussieht), oder den TeilYYYY-
ganz weglassen (so dass 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 bleibt derselbe. SieheTemporal.PlainMonthDay.from()
für weitere Informationen. 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
mit dem zu verwendenden Kalender. Kann ein kritisches Flag haben, indem der Schlüssel mit!
vorangestellt wird: z.B.[!u-ca=iso8601]
. Dieses Flag weist andere Systeme im Allgemeinen 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 Kalender-Annotationen enthalten und eine davon kritisch ist. Standardwert ist[u-ca=iso8601]
. Beachten Sie, dassYYYY-MM-DD
immer als ISO 8601 Kalendertag interpretiert und dann in den angegebenen Kalender umgewandelt wird.
Als Eingabe können Sie optional die Zeit, den Offset und den Zeitzonen-Identifikator im gleichen Format wie PlainDateTime
einschließen, aber sie werden ignoriert. Andere Annotationen im Format [key=value]
werden ebenfalls ignoriert und dürfen nicht das kritische Flag 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 Monat- und Tag-Eigenschaften oder einem RFC 9557 String.
Instanzeigenschaften
Diese Eigenschaften sind auf Temporal.PlainMonthDay.prototype
definiert und werden von allen Instanzen von Temporal.PlainMonthDay
geteilt.
Temporal.PlainMonthDay.prototype.calendarId
Experimentell-
Gibt einen String zurück, der den Kalender darstellt, der verwendet wird, um das interne ISO 8601 Datum zu interpretieren.
Temporal.PlainMonthDay.prototype.constructor
-
Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. Bei
Temporal.PlainMonthDay
Instanzen ist der Anfangswert derTemporal.PlainMonthDay()
Konstruktor. Temporal.PlainMonthDay.prototype.day
Experimentell-
Gibt eine positive ganze Zahl zurück, die den 1-basierten Tagesindex im Monat dieses Datums darstellt, welcher derselbe Tag ist, den Sie in einem Kalender sehen würden. Kalender-abhängig. Beginnt in der Regel bei 1 und ist kontinuierlich, aber nicht immer.
Temporal.PlainMonthDay.prototype.monthCode
Experimentell-
Gibt einen kalenderspezifischen String zurück, der den Monat dieses Datums darstellt. Kalender-abhängig. In der Regel ist es
M
plus eine zweistellige Monatszahl. Bei Schaltmonaten 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 im Wert äquivalent zu einem anderen Monat-Tag ist (in einer Form, die durchTemporal.PlainMonthDay.from()
konvertierbar ist), undfalse
andernfalls. Sie werden sowohl durch ihre Datumswerte als auch ihre Kalender verglichen. Temporal.PlainMonthDay.prototype.toJSON()
Experimentell-
Gibt einen String zurück, der diesen Monat-Tag im gleichen RFC 9557 Format darstellt wie ein Aufruf von
toString()
. Soll implizit vonJSON.stringify()
aufgerufen werden. Temporal.PlainMonthDay.prototype.toLocaleString()
Experimentell-
Gibt einen String mit einer sprachabhängigen Darstellung dieses Monat-Tages 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 darstellt.
Temporal.PlainMonthDay.prototype.valueOf()
Experimentell-
Wirft einen
TypeError
, was verhindert, dassTemporal.PlainMonthDay
Instanzen implizit in primitive Typen 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 darstellt, wobei einige Felder durch neue Werte ersetzt werden.
Beispiele
Nächsten 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 proposal # sec-temporal-plainmonthday-objects |
Browser-Kompatibilität
BCD tables only load in the browser