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

Temporal.Duration.prototype.blank

Eigenschaft

Gibt <code>true</code> zurück, wenn die <code>Temporal.Duration</code> eine Null-Dauer ist (alle Felder 0), sonst <code>false</code>.

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

Signatur

get Temporal.Duration.prototype.blank

Beschreibung

Die Accessor-Eigenschaft blank prüft, ob eine Temporal.Duration eine Null-Dauer darstellt. Das ist genau dann der Fall, wenn alle zehn Felder (years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds) den Wert 0 haben.

Das Ergebnis entspricht immer duration.sign === 0. blank ist aber lesbarer, wenn man nur wissen möchte, ob überhaupt Zeit vergangen ist oder noch übrig ist, z. B. bei Countdowns, beim Vergleich zweier Zeitpunkte mit until()/since() oder bei der Anzeige von Zeitspannen („sofort“ statt „0 Sekunden“).

Es handelt sich um eine reine Getter-Eigenschaft ohne Setter. Da Temporal.Duration-Objekte unveränderlich sind, ändert sich der Wert während der Lebensdauer eines Objekts nie.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn alle Felder der Dauer 0 sind, andernfalls false.

Beispiele

Null-Dauer erkennen

const leer = new Temporal.Duration();
const auchLeer = Temporal.Duration.from('PT0S');
const eineMinute = Temporal.Duration.from({ minutes: 1 });
const negativ = Temporal.Duration.from({ seconds: -5 });

console.log(leer.blank);       // true
console.log(auchLeer.blank);   // true
console.log(eineMinute.blank); // false
console.log(negativ.blank);    // false
true true false false

Prüfen, ob zwei Termine identisch sind

const start = Temporal.PlainDateTime.from('2024-05-10T09:00');
const ende = Temporal.PlainDateTime.from('2024-05-10T09:00');

const abstand = start.until(ende);
if (abstand.blank) {
  console.log('Beide Termine liegen auf demselben Zeitpunkt.');
} else {
  console.log(`Abstand: ${abstand.toString()}`);
}
Beide Termine liegen auf demselben Zeitpunkt.

Verbleibende Zeit benutzerfreundlich anzeigen

const formatiereRest = (dauer) =>
  dauer.blank ? 'sofort' : `in ${dauer.round({ largestUnit: 'hour', smallestUnit: 'minute' }).toString()}`;

const gesamt = Temporal.Duration.from({ hours: 1 });
const verstrichen = Temporal.Duration.from({ minutes: 60 });

// subtract() gleicht Zeiteinheiten aus: PT1H - PT60M = PT0S
const rest = gesamt.subtract(verstrichen);
console.log(rest.toString());       // "PT0S"
console.log(formatiereRest(rest));  // "sofort"
console.log(formatiereRest(Temporal.Duration.from({ minutes: 90 })));
PT0S sofort in PT1H30M

// Wichtig · Fallstricke

  • Browser-Unterstützung: Temporal ist neu und erst in aktuellen Versionen von Firefox (139+) und Chrome/Edge (144+) verfügbar. Safari und ältere Umgebungen brauchen einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill.
  • Kein Setter: Eine Zuweisung wie d.blank = true wird im Sloppy Mode stillschweigend ignoriert und löst im Strict Mode (also auch in ES-Modulen) einen TypeError aus.
  • Keine Normalisierung: blank prüft nur die gespeicherten Felder. Eine Dauer wie { hours: 1, minutes: -60 } kann man gar nicht erst erzeugen, weil gemischte Vorzeichen einen RangeError auslösen. Eine Null-Dauer entsteht daher nur, wenn wirklich alle Felder 0 sind, z. B. als Ergebnis von subtract(), until() oder round().
  • Rundung beachten: Temporal.Duration.from({ seconds: 20 }).round({ smallestUnit: 'minute' }).blank ergibt true, weil auf 0 Minuten gerundet wird. Das kann bei Countdowns unerwartet sein.
  • Gleichwertig zu duration.sign === 0. Um festzustellen, ob zwei Dauern gleich lang sind, verwendet man dagegen Temporal.Duration.compare().