Signatur
Beschreibung
Die Getter-Eigenschaft inLeapYear einer Temporal.ZonedDateTime-Instanz liefert true, wenn das Jahr des lokalen Datums (also in der Zeitzone der Instanz) ein Schaltjahr ist, sonst false. Die Eigenschaft ist schreibgeschützt. Einen Setter gibt es nicht, und with() kann sie ebenfalls nicht ändern.
Was als Schaltjahr gilt, hängt vom Kalendersystem der Instanz ab. Im ISO-8601- bzw. gregorianischen Kalender hat ein Schaltjahr 366 Tage, weil es den 29. Februar gibt. In anderen Kalendern kann ein Schaltjahr einen zusätzlichen Monat haben, etwa im hebräischen oder chinesischen Kalender (erkennbar an monthsInYear), oder einen zusätzlichen Tag.
Typische Anwendungsfälle sind Validierung, Berechnungen mit Jahreslänge (zum Beispiel ein anteiliges Jahresentgelt) oder Hinweise in der Oberfläche, etwa ob ein 29. Februar auswählbar ist. Brauchen Sie die genaue Anzahl der Tage oder Monate, nehmen Sie direkt daysInYear oder monthsInYear.
Rückgabewert
true, wenn das lokale Datum im Kalender der Instanz in einem Schaltjahr liegt, sonst false.Beispiele
Schaltjahr im ISO-Kalender prüfen
const a = Temporal.ZonedDateTime.from('2024-03-15T10:00[Europe/Berlin]');
const b = Temporal.ZonedDateTime.from('2025-03-15T10:00[Europe/Berlin]');
console.log(a.inLeapYear, a.daysInYear);
console.log(b.inLeapYear, b.daysInYear);
Zeitzone beeinflusst das lokale Jahr
// Derselbe Zeitpunkt ist in UTC noch 2024, in Tokio schon 2025
const instant = Temporal.Instant.from('2024-12-31T20:00:00Z');
const utc = instant.toZonedDateTimeISO('UTC');
const tokio = instant.toZonedDateTimeISO('Asia/Tokyo');
console.log(utc.year, utc.inLeapYear);
console.log(tokio.year, tokio.inLeapYear);
Schaltjahr mit Zusatzmonat im hebräischen Kalender
const zdt = Temporal.ZonedDateTime.from('2024-03-15T12:00[Asia/Jerusalem][u-ca=hebrew]');
console.log(zdt.year, zdt.inLeapYear, zdt.monthsInYear);
Anteiligen Tagessatz für das aktuelle Jahr berechnen
const jetzt = Temporal.Now.zonedDateTimeISO('Europe/Berlin');
const jahresbeitrag = 1200;
const tage = jetzt.inLeapYear ? 366 : 365;
console.log(`Tagessatz: ${(jahresbeitrag / tage).toFixed(4)} €`);
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist noch nicht überall verfügbar (Firefox ab 139, Chrome ab 144; Safari bisher nicht). Für produktiven Einsatz ist ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfillnötig. - Das Ergebnis bezieht sich auf das lokale Datum in der Zeitzone der Instanz. Derselbe Zeitpunkt (
Instant) kann je nach Zeitzone in unterschiedlichen Jahren liegen. - Die Bedeutung hängt vom Kalender ab: In Kalendern mit Schaltmonaten heißt
truenicht automatisch „366 Tage“. Für die genaue Länge nehmen SiedaysInYearbzw.monthsInYear. - Nur Lesezugriff: Eine Zuweisung wie
zdt.inLeapYear = truewird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus.