Start · Sprachen · JavaScript · Referenz · Temporal.PlainTime.prototype.nanosecond

Temporal.PlainTime.prototype.nanosecond

Eigenschaft

Gibt die Nanosekundenkomponente (0–999, Einheit 10<sup>-9</sup> s) einer <code>Temporal.PlainTime</code> als ganze Zahl zurück.

seit JavaScript ES2026 (Temporal, Stage 4) – Firefox 139+, Chrome Kategorie: method-property

Signatur

get Temporal.PlainTime.prototype.nanosecond

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

Typ
number
Beschreibung
Ganze Zahl von 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
123 456 789

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());
42 500 08:15:00.0000005

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));
250075

Ü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
0 1

// Wichtig · Fallstricke

  • Häufiger Denkfehler: nanosecond ist nicht der gesamte Sekundenbruchteil in Nanosekunden, sondern nur der Rest unterhalb einer Mikrosekunde (0–999). Den vollständigen Wert musst du aus millisecond, microsecond und nanosecond zusammensetzen.
  • Die Eigenschaft kann nur gelesen werden. Eine Zuweisung wie zeit.nanosecond = 5 wird ignoriert und löst im Strict Mode einen TypeError aus. Nutze stattdessen with().
  • Werte außerhalb von 0–999 werden in with() und from() standardmäßig begrenzt (overflow: 'constrain'). Mit { overflow: 'reject' } lösen sie einen RangeError aus.
  • Date kennt nur Millisekunden. Beim Umwandeln von oder nach Date ist 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/polyfill oder temporal-polyfill.