Signatur
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
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
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()}`);
}
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 })));
// 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/polyfillodertemporal-polyfill. - Kein Setter: Eine Zuweisung wie
d.blank = truewird im Sloppy Mode stillschweigend ignoriert und löst im Strict Mode (also auch in ES-Modulen) einenTypeErroraus. - Keine Normalisierung:
blankprüft nur die gespeicherten Felder. Eine Dauer wie{ hours: 1, minutes: -60 }kann man gar nicht erst erzeugen, weil gemischte Vorzeichen einenRangeErrorauslösen. Eine Null-Dauer entsteht daher nur, wenn wirklich alle Felder 0 sind, z. B. als Ergebnis vonsubtract(),until()oderround(). - Rundung beachten:
Temporal.Duration.from({ seconds: 20 }).round({ smallestUnit: 'minute' }).blankergibttrue, 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 dagegenTemporal.Duration.compare().