Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.inLeapYear

Temporal.ZonedDateTime.prototype.inLeapYear

Eigenschaft

Gibt einen booleschen Wert zurück, der angibt, ob das Datum eines <code>Temporal.ZonedDateTime</code> im Kalender der Instanz in einem Schaltjahr liegt.

seit JavaScript Temporal (Stage 3 / ES-Vorschlag); Firefox 139+, C Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.inLeapYear

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

Typ
boolean
Beschreibung
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);
true 366 false 365

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);
2024 true 2025 false

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);
5784 true 13

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)} €`);
Tagessatz: 3.2787 € (in einem Schaltjahr; sonst 3.2877 €)

// 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/polyfill oder temporal-polyfill nö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 true nicht automatisch „366 Tage“. Für die genaue Länge nehmen Sie daysInYear bzw. monthsInYear.
  • Nur Lesezugriff: Eine Zuweisung wie zdt.inLeapYear = true wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus.