Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.microsecond

Temporal.ZonedDateTime.prototype.microsecond

Eigenschaft

Liefert die Mikrosekunden-Komponente (0–999) der Wanduhrzeit eines <code>Temporal.ZonedDateTime</code>, also die Stellen 4–6 nach dem Sekundenkomma.

seit JavaScript ES2026 (Temporal) – Firefox 139+, Chrome/Edge 144+ Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.microsecond

Beschreibung

Die Accessor-Eigenschaft microsecond gibt eine ganze Zahl von 0 bis 999 zurück. Sie steht für den Mikrosekunden-Anteil (10-6 Sekunden) der Uhrzeit. Temporal zerlegt den Sekundenbruchteil in drei Felder: millisecond (Stellen 1–3), microsecond (Stellen 4–6) und nanosecond (Stellen 7–9). Bei 12:34:56.123456789 ist microsecond also 456 und nicht 123456.

Der Wert bezieht sich auf die Wanduhrzeit in der Zeitzone der Instanz. Weil Zeitzonen-Offsets in der Praxis immer ganze Sekunden sind (meist sogar ganze Minuten), ist der Mikrosekunden-Anteil in jeder Zeitzone gleich. Er entspricht dem Anteil des zugrunde liegenden epochNanoseconds-Werts.

Die Eigenschaft hat nur einen Getter, sie ist also schreibgeschützt. Temporal.ZonedDateTime ist unveränderlich (immutable). Um den Wert zu ändern, erzeugen Sie mit with({ microsecond: … }) eine neue Instanz. Mit round() runden Sie auf ganze Mikrosekunden.

Typische Einsatzfälle sind hochauflösende Zeitstempel, etwa aus Datenbanken wie PostgreSQL (timestamptz mit Mikrosekunden-Genauigkeit), aus Logdateien oder aus Messdaten. Sie können damit Zeitangaben formatieren, vergleichen oder auf eine bestimmte Genauigkeit kürzen.

Rückgabewert

Typ
number
Beschreibung
Eine ganze Zahl von 0 bis 999: der Mikrosekunden-Anteil der Uhrzeit, ohne Milli- und Nanosekunden.

Beispiele

Sekundenbruchteile auslesen

const zdt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:34:56.123456789-04:00[America/New_York]"
);

console.log(zdt.millisecond); // Stellen 1–3
console.log(zdt.microsecond); // Stellen 4–6
console.log(zdt.nanosecond);  // Stellen 7–9
123 456 789

Mikrosekunden mit with() ändern

const zdt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:34:56.123456789-04:00[America/New_York]"
);

// Neue Instanz – das Original bleibt unverändert
const ohneMikro = zdt.with({ microsecond: 0 });

console.log(ohneMikro.toString());
console.log(zdt.microsecond);

// zdt.microsecond = 0; // TypeError im Strict Mode, da nur Getter
2021-07-01T12:34:56.123000789-04:00[America/New_York] 456

Datenbank-Zeitstempel auf Mikrosekunden runden

const messung = Temporal.ZonedDateTime.from(
  "2024-03-15T08:00:00.987654321+01:00[Europe/Berlin]"
);

// PostgreSQL speichert nur Mikrosekunden-Genauigkeit
const gerundet = messung.round({ smallestUnit: "microsecond" });

console.log(gerundet.microsecond);
console.log(gerundet.nanosecond);
console.log(gerundet.toString());
655 0 2024-03-15T08:00:00.987655+01:00[Europe/Berlin]

Mikrosekunden innerhalb der Sekunde berechnen

const zdt = Temporal.ZonedDateTime.from(
  "2024-01-01T00:00:00.042017+00:00[UTC]"
);

// Gesamte Mikrosekunden seit Beginn der Sekunde
const mikroInSekunde = zdt.millisecond * 1000 + zdt.microsecond;

console.log(mikroInSekunde);
42017

// Wichtig · Fallstricke

  • Nur ein Teil des Sekundenbruchteils: microsecond liefert nie mehr als 999. Wenn Sie alle Mikrosekunden seit Beginn der Sekunde brauchen, rechnen Sie millisecond * 1000 + microsecond.
  • Schreibgeschützt: Eine Zuweisung wirkt nicht und wirft im Strict Mode einen TypeError. Nutzen Sie stattdessen with(). Bei with() wird ein Wert über 999 standardmäßig auf 999 begrenzt (overflow: "constrain"). Mit overflow: "reject" wird stattdessen ein RangeError geworfen.
  • Timer-Genauigkeit: Die Werte von Temporal.Now.zonedDateTimeISO() sind in Browsern aus Datenschutzgründen (Schutz vor Fingerprinting und Timing-Angriffen) oft vergröbert. microsecond ist dort daher häufig 0 oder in festen Schritten gerundet.
  • Kompatibilität: Temporal ist ziemlich neu. Es läuft in Firefox ab Version 139 und in Chromium-Browsern ab Version 144, aber noch nicht in Safari. Für ältere Umgebungen gibt es die Polyfills @js-temporal/polyfill oder temporal-polyfill.
  • Das ältere Date-Objekt kennt nur Millisekunden. Wenn Sie es nach Temporal umwandeln, etwa über Temporal.Instant.fromEpochMilliseconds(), ist microsecond immer 0.