Signatur
Beschreibung
Die Methode equals() vergleicht eine Temporal.PlainDateTime-Instanz mit einem anderen Datum-Uhrzeit-Wert. Sie gibt true zurück, wenn beide Werte in allen Feldern übereinstimmen. Dazu gehören Jahr, Monat, Tag, Stunde, Minute, Sekunde, Milli-, Mikro- und Nanosekunde. Zusätzlich muss der Kalender gleich sein.
Das Argument muss keine fertige Instanz sein. Alles, was Temporal.PlainDateTime.from() akzeptiert, wird vorher automatisch umgewandelt: ISO-8601-Strings, Objekte mit Feldern wie { year, month, day, hour } oder andere Temporal-Objekte.
Temporal-Objekte sind Objekte. Deshalb vergleichen === und == nur die Referenz und nicht den Wert. Nutzen Sie equals(), wenn Sie wissen wollen, ob zwei Zeitpunkte gleich sind, zum Beispiel beim Finden doppelter Termine oder beim Prüfen auf Änderungen. Wenn Sie sortieren oder wissen wollen, welcher Wert früher liegt, verwenden Sie stattdessen Temporal.PlainDateTime.compare().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $other Pflicht | Temporal.PlainDateTime | string | Object | Der Vergleichswert: eine Temporal.PlainDateTime-Instanz, ein ISO-8601-String (z. B. "2024-05-01T09:30") oder ein Objekt mit Datums- und Zeitfeldern. Er wird wie mit Temporal.PlainDateTime.from() umgewandelt. |
Beispiele
Instanz, Objekt und String vergleichen
const termin = Temporal.PlainDateTime.from("2024-05-01T09:30:00");
// Objekt mit Feldern
const ausFeldern = Temporal.PlainDateTime.from({
year: 2024, month: 5, day: 1, hour: 9, minute: 30
});
console.log(termin.equals(ausFeldern)); // gleiche Werte
console.log(termin === ausFeldern); // nur Referenzvergleich
console.log(termin.equals("2024-05-01T09:30")); // String wird umgewandelt
console.log(termin.equals("2024-05-01T09:30:00.000000001")); // 1 ns Unterschied
Unterschiedlicher Kalender: equals() vs. compare()
const iso = Temporal.PlainDateTime.from("2024-05-01T09:30");
const japanisch = iso.withCalendar("japanese");
// Gleicher Zeitpunkt, aber anderer Kalender
console.log(iso.equals(japanisch));
console.log(Temporal.PlainDateTime.compare(iso, japanisch));
// Vor dem Vergleich den Kalender angleichen
console.log(iso.equals(japanisch.withCalendar("iso8601")));
Doppelte Termine aus einer Liste entfernen
const termine = [
"2024-06-10T14:00",
"2024-06-10T14:00:00",
"2024-06-11T08:15",
"2024-06-10T14:00:00.000"
].map((s) => Temporal.PlainDateTime.from(s));
const eindeutig = termine.reduce((liste, t) => {
if (!liste.some((vorhanden) => vorhanden.equals(t))) liste.push(t);
return liste;
}, []);
console.log(eindeutig.map((t) => t.toString()));
Prüfen, ob ein Formularwert geändert wurde
const gespeichert = Temporal.PlainDateTime.from("2024-09-01T10:00");
const hatGeaendert = (eingabe) => !gespeichert.equals(eingabe);
// Wert aus <input type="datetime-local"> hat das Format YYYY-MM-DDTHH:mm
console.log(hatGeaendert("2024-09-01T10:00"));
console.log(hatGeaendert("2024-09-01T10:15"));
// Wichtig · Fallstricke
- Kalender zählt mit: Zwei Werte für denselben Zeitpunkt in verschiedenen Kalendern (z. B.
iso8601undjapanese) sind lautequals()nicht gleich.Temporal.PlainDateTime.compare()ignoriert den Kalender dagegen und liefert0. - Nanosekunden-Genauigkeit: Schon 1 ns Unterschied ergibt
false. Wenn nur Minuten wichtig sind, runden Sie vorher, etwa mitdt.round({ smallestUnit: \"minute\" }). - Keine Zeitzone:
PlainDateTimekennt keine Zeitzone und keinen Offset. Stehen in einem String Offset-Angaben wieZoder+02:00, werden diese beim Umwandeln verworfen bzw. beiZmitRangeErrorabgelehnt. Für echte Zeitpunkte istTemporal.ZonedDateTimeoderTemporal.Instantdie richtige Wahl. - Fehler: Ist
othernicht umwandelbar, wirft die Methode einenTypeError(falscher Typ) oderRangeError(ungültiger String oder ungültige Werte). Sie gibt dann nichtfalsezurück. - Kompatibilität: Temporal ist erst in neueren Browsern verfügbar, etwa Firefox ab Version 139 und Chromium ab etwa Version 144. Für ältere Umgebungen, Safari und Node.js brauchen Sie ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.