Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.toPlainTime()

Temporal.ZonedDateTime.prototype.toPlainTime()

Methode

Gibt ein neues <code>Temporal.PlainTime</code> mit der lokalen Wanduhrzeit dieses <code>ZonedDateTime</code> zurück, also ohne Datum und ohne Zeitzone.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, Safa Kategorie: method-property

Signatur

Temporal.ZonedDateTime.prototype.toPlainTime()

Beschreibung

toPlainTime() nimmt aus einem Temporal.ZonedDateTime nur die Uhrzeit heraus: Stunde, Minute, Sekunde, Millisekunde, Mikrosekunde und Nanosekunde. Maßgeblich ist dabei die Uhrzeit, die in der Zeitzone des Objekts auf der Wanduhr steht. Datum, Zeitzone, Offset und Kalender gehören nicht zum Ergebnis.

Die Methode ist nützlich, wenn nur die Uhrzeit zählt, zum Beispiel bei:

  • Öffnungszeiten,
  • täglich wiederkehrenden Terminen,
  • dem Vergleich mit einer festen Uhrzeit, etwa „vor 9:00 Uhr?“,
  • der Anzeige einer Uhrzeit.

Das Ergebnis ist ein Temporal.PlainTime und hängt nicht mehr an einem bestimmten Zeitpunkt. Wenn du daraus wieder einen absoluten Zeitpunkt brauchst, musst du Datum und Zeitzone neu angeben, zum Beispiel mit PlainTime.prototype.toZonedDateTime() oder mit ZonedDateTime.prototype.withPlainTime().

Wie alle Temporal-Objekte sind ZonedDateTime und PlainTime unveränderlich. Die Methode erzeugt also immer ein neues Objekt und ändert das ursprüngliche nicht.

Rückgabewert

Typ
Temporal.PlainTime
Beschreibung
Ein neues Temporal.PlainTime mit der Wanduhrzeit (Stunde bis Nanosekunde) dieses ZonedDateTime in seiner Zeitzone.

Beispiele

Uhrzeit aus einem Zeitpunkt mit Zeitzone herauslösen

const zdt = Temporal.ZonedDateTime.from(
  "2024-03-15T14:30:45.123[Europe/Berlin]"
);

const time = zdt.toPlainTime();
console.log(time.toString());
console.log(time.hour, time.minute);
14:30:45.123 14 30

Derselbe Zeitpunkt, unterschiedliche Uhrzeiten je Zeitzone

const meeting = Temporal.ZonedDateTime.from(
  "2024-06-01T09:00[America/New_York]"
);

console.log(meeting.toPlainTime().toString());
console.log(meeting.withTimeZone("Europe/Berlin").toPlainTime().toString());
console.log(meeting.withTimeZone("Asia/Tokyo").toPlainTime().toString());
09:00:00 15:00:00 22:00:00

Prüfen, ob ein Geschäft gerade geöffnet hat

const opens = Temporal.PlainTime.from("09:00");
const closes = Temporal.PlainTime.from("18:00");

const isOpen = (zdt) => {
  const t = zdt.toPlainTime();
  return Temporal.PlainTime.compare(t, opens) >= 0 &&
         Temporal.PlainTime.compare(t, closes) < 0;
};

const now = Temporal.Now.zonedDateTimeISO("Europe/Berlin");
console.log(`Geöffnet: ${isOpen(now)}`);
console.log(isOpen(Temporal.ZonedDateTime.from("2024-05-10T19:15[Europe/Berlin]")));
Geöffnet: true (abhängig von der aktuellen Uhrzeit) false

Uhrzeit auf ein anderes Datum übertragen

const source = Temporal.ZonedDateTime.from(
  "2024-01-10T07:45[Europe/Berlin]"
);

const nextWeek = source
  .add({ weeks: 1 })
  .withPlainTime(source.toPlainTime());

console.log(nextWeek.toString());
2024-01-17T07:45:00+01:00[Europe/Berlin]

// Wichtig · Fallstricke

  • Zeitzone und Offset gehen verloren: Ein PlainTime ist kein eindeutiger Zeitpunkt mehr. Zwei ZonedDateTime-Objekte für denselben Moment in verschiedenen Zeitzonen ergeben unterschiedliche Uhrzeiten. Umgekehrt können verschiedene Momente dieselbe Uhrzeit ergeben.
  • Sommerzeit: Bei der Zeitumstellung im Herbst gibt es Uhrzeiten wie 02:30 zweimal. toPlainTime() liefert dann in beiden Fällen 02:30. Die Information, welcher der beiden Zeitpunkte gemeint war, steckt nur im Offset des ZonedDateTime und fehlt im Ergebnis.
  • Vergleichsoperatoren: Nutze zum Vergleichen Temporal.PlainTime.compare() oder equals(), nicht <, > oder ===. valueOf() löst bei Temporal-Objekten absichtlich einen TypeError aus.
  • Keine Argumente: Die Methode erwartet keine Parameter. Ältere Entwürfe und Polyfills hatten zum Teil andere Varianten. Prüfe bei Beispielen aus älteren Quellen deshalb die aktuelle Spezifikation.
  • Kompatibilität: Temporal wird nicht überall nativ unterstützt: in Firefox ab 139, in Chromium-Browsern ab 144, in Safari und älteren Node.js-Versionen noch nicht. Für produktiven Einsatz empfiehlt sich ein Polyfill wie @js-temporal/polyfill oder temporal-polyfill.