Start · Sprachen · JavaScript · Referenz · Temporal.Duration.prototype.milliseconds

Temporal.Duration.prototype.milliseconds

Eigenschaft

Gibt die Anzahl der Millisekunden einer <code>Temporal.Duration</code> als ganze Zahl zurück. Das Vorzeichen entspricht dem der Dauer.

seit JavaScript Temporal (neu): Firefox 139+, Chrome 144+; Safari Kategorie: method-property

Signatur

get Temporal.Duration.prototype.milliseconds

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

Typ
number
Beschreibung
Eine ganze Zahl mit dem Wert des Millisekunden-Feldes. Sie ist 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
0 123 456 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
1500 1 500 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`);
1 s 250 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
-250 -PT2S

// Wichtig · Fallstricke

  • Keine Gesamtdauer: milliseconds ist nur ein einzelnes Feld der Dauer. Für PT2S ist der Wert 0 und nicht 2000. Die gesamte Dauer in Millisekunden liefert duration.total("millisecond").
  • Kein Ausgleich: Werte über 999 bleiben unverändert stehen, bis man round() mit passender largestUnit aufruft.
  • Nur lesbar: Es gibt keinen Setter. Eine Zuweisung wird ignoriert, im Strict Mode wirft sie einen TypeError. Für einen geänderten Wert with() verwenden.
  • Einheitliches Vorzeichen: Felder mit gemischten Vorzeichen, z. B. { seconds: 1, milliseconds: -5 }, lösen einen RangeError aus.
  • 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/polyfill oder temporal-polyfill.