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

Temporal.PlainDateTime.prototype.microsecond

Eigenschaft

Liefert die Mikrosekundenkomponente (10<sup>-6</sup> s) eines <code>Temporal.PlainDateTime</code> als ganze Zahl von 0 bis 999.

seit JavaScript Temporal (TC39 Stage 3) – Firefox 139+, Chrome 144 Kategorie: method-property

Signatur

get Temporal.PlainDateTime.prototype.microsecond

Beschreibung

Die Accessor-Eigenschaft microsecond gibt den Mikrosekundenanteil der Uhrzeit eines Temporal.PlainDateTime zurück. Der Wert liegt immer zwischen 0 und 999. Er steht zwischen millisecond (10-3 s) und nanosecond (10-9 s). Die vollständigen Sekundenbruchteile ergeben sich also erst, wenn man alle drei Komponenten zusammennimmt.

Die Eigenschaft ist nur lesbar, weil Temporal-Objekte unveränderlich sind. Einen neuen Mikrosekundenwert setzt man mit with({ microsecond: … }). Dabei entsteht eine neue Instanz, das ursprüngliche Objekt bleibt unverändert.

Man braucht die Eigenschaft vor allem bei hochauflösenden Zeitstempeln, etwa aus Datenbanken wie PostgreSQL (timestamp mit Mikrosekunden), aus Messdaten oder Protokolldateien. Das klassische Date kann das nicht darstellen, weil es nur auf die Millisekunde genau ist.

Rückgabewert

Typ
number
Beschreibung
Ganze Zahl von 0 bis 999: die Mikrosekunden innerhalb der aktuellen Millisekunde.

Beispiele

Mikrosekunden auslesen

const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456789");

console.log(dt.millisecond);  // 123
console.log(dt.microsecond);  // 456
console.log(dt.nanosecond);   // 789
123 456 789

Mikrosekunden per with() ändern

const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456");
const neu = dt.with({ microsecond: 0 });

console.log(dt.toString());   // Original bleibt unverändert
console.log(neu.toString());
2024-03-15T14:30:45.123456 2024-03-15T14:30:45.123

Datenbank-Zeitstempel mit Mikrosekunden formatieren

// z. B. PostgreSQL-Timestamp mit 6 Nachkommastellen
const raw = "2024-11-02 08:15:03.004271";
const dt = Temporal.PlainDateTime.from(raw.replace(" ", "T"));

const micros = dt.millisecond * 1000 + dt.microsecond;
console.log(`Sekunde ${dt.second}, Bruchteil: ${String(micros).padStart(6, "0")} µs`);
Sekunde 3, Bruchteil: 004271 µs

Auf Mikrosekunden runden

const dt = Temporal.PlainDateTime.from("2024-03-15T14:30:45.123456789");
const gerundet = dt.round({ smallestUnit: "microsecond" });

console.log(gerundet.microsecond); // 457 (789 ns wird aufgerundet)
console.log(gerundet.nanosecond);  // 0
457 0

// Wichtig · Fallstricke

  • Nur ein Teil des Bruchteils: microsecond enthält nicht die Millisekunden. Aus .123456 ergibt sich microsecond === 456, nicht 123456. Die Gesamtzahl der Mikrosekunden erhält man mit millisecond * 1000 + microsecond.
  • Nur lesbar: Eine Zuweisung wie dt.microsecond = 5 hat keine Wirkung und wirft im Strict Mode einen TypeError. Stattdessen with() verwenden.
  • Werte außerhalb 0–999: with({ microsecond: 1500 }) wird standardmäßig auf 999 begrenzt (overflow: \"constrain\"). Mit { overflow: \"reject\" } wird stattdessen ein RangeError geworfen.
  • Konvertierung zu Date: Beim Umwandeln in ein Date gehen die Mikrosekunden verloren, weil Date nur Millisekunden speichert.
  • Kompatibilität: Temporal ist erst in neueren Browsern verfügbar (Firefox 139+, Chrome 144+). Safari und ältere Node.js-Versionen unterstützen es noch nicht nativ. Für den produktiven Einsatz eignet sich ein Polyfill wie @js-temporal/polyfill oder temporal-polyfill.