Signatur
Beschreibung
Die Eigenschaft milliseconds ist nur lesbar. Sie liefert den Millisekunden-Anteil einer Temporal.Duration. Eine Dauer besteht aus zehn einzelnen Feldern (von years bis nanoseconds). milliseconds gibt nur den Wert dieses einen Feldes zurück, nicht die gesamte Dauer umgerechnet in Millisekunden.
Die Felder einer Dauer werden nicht automatisch ausgeglichen. Erzeugt man Temporal.Duration.from({ milliseconds: 1500 }), liefert milliseconds den Wert 1500 und nicht 500. Erst round({ largestUnit: "second" }) verteilt den Wert auf seconds und milliseconds. Wird eine Dauer dagegen aus einem ISO-8601-String wie "PT1.5S" gelesen, teilt Temporal den Nachkommaanteil selbst auf: seconds ist dann 1 und milliseconds ist 500.
Bei negativen Dauern ist der Wert negativ oder 0, denn alle Felder einer Dauer haben dasselbe Vorzeichen. Mit with() erhält man eine neue Dauer mit geändertem Millisekunden-Wert, denn Temporal.Duration ist unveränderlich. Die Gesamtdauer in Millisekunden liefert total("millisecond").
Rückgabewert
0, wenn das Feld nicht belegt ist, und negativ bei negativen Dauern.Beispiele
Millisekunden aus einem ISO-String auslesen
const d = Temporal.Duration.from("PT0.123456789S");
console.log(d.seconds); // 0
console.log(d.milliseconds); // 123
console.log(d.microseconds); // 456
console.log(d.nanoseconds); // 789
Kein automatischer Ausgleich – erst round() verteilt die Werte
const d = Temporal.Duration.from({ milliseconds: 1500 });
console.log(d.milliseconds); // 1500
const balanced = d.round({ largestUnit: "second" });
console.log(balanced.seconds, balanced.milliseconds); // 1 500
// Gesamtdauer in Millisekunden:
console.log(balanced.total("millisecond")); // 1500
Messdauer zwischen zwei Zeitpunkten formatieren
const start = Temporal.Instant.from("2024-01-01T00:00:00Z");
const end = Temporal.Instant.from("2024-01-01T00:00:01.250Z");
const elapsed = end.since(start); // largestUnit ist standardmäßig "second"
console.log(`${elapsed.seconds} s ${elapsed.milliseconds} ms`);
Negative Dauer und Ändern mit with()
const d = Temporal.Duration.from({ seconds: -2, milliseconds: -250 });
console.log(d.milliseconds); // -250
const ohneMs = d.with({ milliseconds: 0 });
console.log(ohneMs.toString()); // "-PT2S"
// d.milliseconds = 0; // TypeError im Strict Mode – Eigenschaft ist nur lesbar
// Wichtig · Fallstricke
- Keine Gesamtdauer:
millisecondsist nur ein einzelnes Feld der Dauer. FürPT2Sist der Wert0und nicht2000. Die gesamte Dauer in Millisekunden liefertduration.total("millisecond"). - Kein Ausgleich: Werte über 999 bleiben unverändert stehen, bis man
round()mit passenderlargestUnitaufruft. - Nur lesbar: Es gibt keinen Setter. Eine Zuweisung wird ignoriert, im Strict Mode wirft sie einen
TypeError. Für einen geänderten Wertwith()verwenden. - Einheitliches Vorzeichen: Felder mit gemischten Vorzeichen, z. B.
{ seconds: 1, milliseconds: -5 }, lösen einenRangeErroraus. - Kompatibilität: Temporal ist neu und wird noch nicht von allen Browsern unterstützt (Stand Anfang 2026: Firefox 139+, Chrome 144+, Safari noch nicht). Für ältere Browser und Node.js gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill.