Signatur
Beschreibung
equals() vergleicht die aktuelle Temporal.ZonedDateTime-Instanz mit einem anderen Wert. Das Ergebnis ist nur dann true, wenn alle drei Bestandteile übereinstimmen:
- der exakte Zeitpunkt (
epochNanoseconds), - die Zeitzone (verglichen über den kanonischen Bezeichner),
- der Kalender (
calendarId).
Der Parameter other muss kein ZonedDateTime-Objekt sein. Er wird intern mit Temporal.ZonedDateTime.from() umgewandelt. Du kannst also auch einen RFC-9557-String mit Zeitzonen-Annotation (z. B. "2024-03-31T10:00:00+02:00[Europe/Berlin]") oder ein Objekt mit den passenden Feldern übergeben.
Nutze equals(), wenn zwei Werte vollständig gleich sein müssen, etwa beim Prüfen auf Änderungen oder bei Duplikaten. Willst du nur wissen, ob zwei Werte denselben Zeitpunkt meinen, egal in welcher Zeitzone, nimm Temporal.ZonedDateTime.compare() (Ergebnis 0) oder vergleiche die Werte von toInstant(). Die Operatoren === und == sind dafür nicht geeignet: Sie vergleichen nur Objektreferenzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $other Pflicht | Temporal.ZonedDateTime | string | object | Das Datum mit Uhrzeit, mit dem verglichen wird. Es wird mit Temporal.ZonedDateTime.from() umgewandelt. Ein String braucht eine Zeitzonen-Annotation in eckigen Klammern, zum Beispiel [Europe/Berlin]. |
Rückgabewert
true, wenn Zeitpunkt, Zeitzone und Kalender übereinstimmen, sonst false.Beispiele
Zwei gleiche Termine vergleichen
const a = Temporal.ZonedDateTime.from("2024-03-31T10:00:00+02:00[Europe/Berlin]");
const b = Temporal.ZonedDateTime.from("2024-03-31T10:00:00+02:00[Europe/Berlin]");
console.log(a.equals(b)); // Wertvergleich
console.log(a === b); // nur Referenzvergleich
Gleicher Zeitpunkt, andere Zeitzone
const berlin = Temporal.ZonedDateTime.from("2024-06-01T12:00:00+02:00[Europe/Berlin]");
const london = berlin.withTimeZone("Europe/London");
console.log(berlin.equals(london)); // Zeitzone unterscheidet sich
console.log(Temporal.ZonedDateTime.compare(berlin, london)); // gleicher Zeitpunkt
console.log(berlin.toInstant().equals(london.toInstant()));
Vergleich mit einem String und einem anderen Kalender
const termin = Temporal.ZonedDateTime.from("2024-12-24T18:00:00+01:00[Europe/Berlin]");
// String wird automatisch mit from() umgewandelt
console.log(termin.equals("2024-12-24T18:00:00+01:00[Europe/Berlin]"));
// Gleicher Zeitpunkt, aber Kalender "gregory" statt "iso8601"
console.log(termin.equals(termin.withCalendar("gregory")));
Änderung eines Termins erkennen
const original = Temporal.ZonedDateTime.from("2025-01-15T09:30:00+01:00[Europe/Berlin]");
const bearbeitet = original.with({ minute: 45 });
const istGeaendert = (alt, neu) => !alt.equals(neu);
console.log(istGeaendert(original, original.with({ minute: 30 })));
console.log(istGeaendert(original, bearbeitet));
// Wichtig · Fallstricke
- Strenger Vergleich: Zwei Werte für denselben Zeitpunkt in verschiedenen Zeitzonen sind nicht gleich. Eine feste Verschiebung wie
"+01:00"und eine benannte Zone wie"Europe/Berlin"gelten ebenfalls als unterschiedlich, auch wenn die Uhrzeit gleich ist. Für einen reinen Vergleich des Zeitpunkts nimmcompare()odertoInstant().equals(). - Alias-Zeitzonen: Zeitzonen werden über ihren kanonischen Bezeichner verglichen. Aliase wie
Asia/CalcuttaundAsia/Kolkatagelten daher als gleich, auch wenntimeZoneIdunterschiedliche Strings liefert. - Kalender zählt mit:
iso8601undgregorysind unterschiedliche Kalender. Der Vergleich ergibt dannfalse. - Fehler bei ungültigem Argument: Lässt sich
othernicht umwandeln, wirft die Methode einen Fehler. Ein String ohne Zeitzonen-Annotation (z. B."2024-01-01T10:00") führt zu einemRangeError, ein falscher Typ wienullzu einemTypeError. - Nicht mit
===vergleichen: Temporal-Objekte sind Referenztypen. Die MethodevalueOf()wirft absichtlich einenTypeError, deshalb funktionieren auch<und>nicht. - Kompatibilität: Temporal ist noch nicht in allen Browsern verfügbar. Für ältere Umgebungen gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill.