Signatur
Beschreibung
Die Accessor-Eigenschaft nanosecond liefert den Nanosekundenanteil einer Uhrzeit vom Typ Temporal.PlainTime. Der Wert ist immer eine ganze Zahl von 0 bis 999. Er steht nicht für alle Nanosekunden seit Beginn der Sekunde, sondern nur für die letzte Stelle der Unterteilung: Die Sekundenbruchteile verteilen sich auf millisecond, microsecond und nanosecond.
Bei der Uhrzeit 12:30:45.123456789 sind also millisecond = 123, microsecond = 456 und nanosecond = 789. Das ist vor allem dann wichtig, wenn du hochgenaue Zeitstempel verarbeitest, etwa aus Messsystemen, Logs oder Datenbanken mit Nanosekunden-Genauigkeit.
Die Eigenschaft kann nur gelesen werden. Weil Temporal.PlainTime unveränderlich ist, erzeugst du eine geänderte Uhrzeit mit with({ nanosecond: … }). Die Methode gibt eine neue Instanz zurück.
Rückgabewert
0 bis 999: der Nanosekundenanteil der Uhrzeit.Beispiele
Sekundenbruchteile auslesen
const zeit = Temporal.PlainTime.from('12:30:45.123456789');
console.log(zeit.millisecond); // Millisekunden
console.log(zeit.microsecond); // Mikrosekunden
console.log(zeit.nanosecond); // Nanosekunden
Nanosekunden mit with() ändern
const zeit = new Temporal.PlainTime(8, 15, 0, 0, 0, 42);
const korrigiert = zeit.with({ nanosecond: 500 });
console.log(zeit.nanosecond); // Original bleibt unverändert
console.log(korrigiert.nanosecond);
console.log(korrigiert.toString());
Gesamte Nanosekunden seit Beginn der Sekunde berechnen
const gesamtNanos = (t) =>
t.millisecond * 1_000_000 + t.microsecond * 1_000 + t.nanosecond;
const messung = Temporal.PlainTime.from('23:59:59.000250075');
console.log(gesamtNanos(messung));
Überlauf beim Addieren
const zeit = Temporal.PlainTime.from('10:00:00.000000999');
const spaeter = zeit.add({ nanoseconds: 1 });
console.log(spaeter.nanosecond); // läuft auf 0 zurück
console.log(spaeter.microsecond); // Übertrag in Mikrosekunden
// Wichtig · Fallstricke
- Häufiger Denkfehler:
nanosecondist nicht der gesamte Sekundenbruchteil in Nanosekunden, sondern nur der Rest unterhalb einer Mikrosekunde (0–999). Den vollständigen Wert musst du ausmillisecond,microsecondundnanosecondzusammensetzen. - Die Eigenschaft kann nur gelesen werden. Eine Zuweisung wie
zeit.nanosecond = 5wird ignoriert und löst im Strict Mode einenTypeErroraus. Nutze stattdessenwith(). - Werte außerhalb von 0–999 werden in
with()undfrom()standardmäßig begrenzt (overflow: 'constrain'). Mit{ overflow: 'reject' }lösen sie einenRangeErroraus. Datekennt nur Millisekunden. Beim Umwandeln von oder nachDateist der Nanosekundenwert daher immer 0 bzw. geht verloren.- Kompatibilität: Temporal ist noch neu (Firefox 139+, Chrome 144+). In anderen Umgebungen brauchst du ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.