Signatur
Beschreibung
Temporal.Now.plainTimeISO() liest die aktuelle Systemzeit und gibt davon nur die Wanduhrzeit zurück, also Stunde, Minute, Sekunde und Sekundenbruchteile bis auf Nanosekunden, als Temporal.PlainTime. Datum, Zeitzone und Offset gehören nicht zum Ergebnis.
Ohne Argument gilt die Systemzeitzone der Laufzeitumgebung (Temporal.Now.timeZoneId()). Wenn du eine IANA-Zeitzonen-ID wie "Europe/Berlin" oder einen Offset wie "+05:30" übergibst, bekommst du die Uhrzeit, die dort gerade auf der Uhr steht. Das ist praktisch für Anzeigen wie „Ortszeit in Tokio“ oder für Prüfungen wie „Hat der Laden gerade geöffnet?“.
Eine PlainTime gehört zu keinem Zeitpunkt auf der Zeitachse. Sie eignet sich zum Vergleichen mit festen Uhrzeiten (Temporal.PlainTime.compare()), zum Rechnen mit Dauern (add(), until()) und zum Formatieren. Zum Speichern von Zeitpunkten oder Messen von Zeitspannen über Mitternacht hinweg nimmst du besser Temporal.Now.instant() oder Temporal.Now.zonedDateTimeISO().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timeZone | string | Temporal.ZonedDateTime | Temporal.Now.timeZoneId() | Zeitzone, in der die aktuelle Uhrzeit bestimmt wird: IANA-ID (z. B. "America/New_York"), "UTC", Offset-String (z. B. "-03:00") oder ein Temporal.ZonedDateTime, dessen Zeitzone dann verwendet wird. |
Rückgabewert
Temporal.PlainTime, genau bis auf Nanosekunden (tatsächliche Auflösung hängt von der Umgebung ab).Beispiele
Aktuelle Uhrzeit in der Systemzeitzone
const jetzt = Temporal.Now.plainTimeISO();
console.log(jetzt.toString());
// Auf Minuten gerundet ausgeben
console.log(jetzt.toString({ smallestUnit: 'minute' }));
Weltzeituhr für mehrere Städte
const staedte = {
Berlin: 'Europe/Berlin',
'New York': 'America/New_York',
Tokio: 'Asia/Tokyo',
UTC: 'UTC'
};
for (const [stadt, zone] of Object.entries(staedte)) {
const zeit = Temporal.Now.plainTimeISO(zone);
console.log(`${stadt.padEnd(9)} ${zeit.toString({ smallestUnit: 'minute' })}`);
}
Öffnungszeiten prüfen
const oeffnet = Temporal.PlainTime.from('09:00');
const schliesst = Temporal.PlainTime.from('18:30');
const istGeoeffnet = (zone = 'Europe/Berlin') => {
const jetzt = Temporal.Now.plainTimeISO(zone);
return Temporal.PlainTime.compare(jetzt, oeffnet) >= 0 &&
Temporal.PlainTime.compare(jetzt, schliesst) < 0;
};
console.log(istGeoeffnet() ? 'Geöffnet' : 'Geschlossen');
Zeit bis Feierabend berechnen
const feierabend = Temporal.PlainTime.from('17:00');
const jetzt = Temporal.Now.plainTimeISO();
if (Temporal.PlainTime.compare(jetzt, feierabend) < 0) {
const rest = jetzt.until(feierabend, { largestUnit: 'hour', smallestUnit: 'minute' });
console.log(`Noch ${rest.hours} h ${rest.minutes} min bis Feierabend`);
} else {
console.log('Feierabend!');
}
// Wichtig · Fallstricke
- Kompatibilität: Temporal ist erst seit Kurzem in Browsern verfügbar (Firefox 139+, Chrome 144+). Safari und ältere Node.js-Versionen unterstützen es noch nicht. Prüfe das mit
typeof Temporal !== 'undefined'und lade bei Bedarf ein Polyfill wie@js-temporal/polyfillodertemporal-polyfill. - Kein Datum: Rechnungen mit
PlainTimelaufen um Mitternacht über (23:30 + 1 h = 00:30). Die Information, dass der Tag gewechselt hat, geht dabei verloren. Für Spannen über mehrere Tage nimmTemporal.Now.plainDateTimeISO()oderzonedDateTimeISO(). - Keine Zeitmessung: Um Laufzeiten zu messen, nimm
performance.now()oderTemporal.Now.instant(). Wanduhrzeiten springen bei Sommerzeitumstellungen und wenn die Systemuhr neu eingestellt wird. - Eine ungültige Zeitzonen-ID löst einen
RangeErroraus, ein falscher Typ (z. B. eine Zahl) einenTypeError. - Datenschutz: Browser können die Genauigkeit reduzieren, um Fingerprinting und Timing-Angriffe zu erschweren. Die Nachkommastellen sind dann gerundet.
- Die Methode heißt
plainTimeISO, weil sie immer den ISO-8601-Kalender verwendet. Eine VarianteplainTime()mit Kalender-Parameter gibt es nicht mehr.