Start · Sprachen · JavaScript · Referenz · Date.prototype.getYear()

Date.prototype.getYear()

Methode

Gibt das Jahr des Datums in lokaler Zeit minus 1900 zurück – veraltet, stattdessen <code>getFullYear()</code> verwenden.

seit JavaScript ES1 (veraltet, in Annex B der Spezifikation) deprecated seit ja Kategorie: method-property

Signatur

Date.prototype.getYear()

Beschreibung

Die Methode getYear() liefert das Jahr eines Date-Objekts gemäß der lokalen Zeitzone, allerdings nicht als vollständige Jahreszahl, sondern als Differenz zum Jahr 1900. Für das Jahr 2024 erhält man also 124, für 1995 95 und für 1800 -100.

Dieses Verhalten stammt aus der Frühzeit von JavaScript, als zweistellige Jahreszahlen üblich waren. Es war eine der bekannten Ursachen für Fehler rund um das „Jahr-2000-Problem“: Code, der einfach "19" + date.getYear() zusammensetzte, erzeugte ab dem Jahr 2000 Werte wie "19100".

Die Methode ist veraltet und nur noch aus Kompatibilitätsgründen im Anhang B der ECMAScript-Spezifikation enthalten. In neuem Code sollte man ausschließlich getFullYear() (lokale Zeit) oder getUTCFullYear() (UTC) verwenden. Sinnvoll ist das Wissen über getYear() vor allem beim Pflegen oder Migrieren von Altcode.

Bei einem ungültigen Datum (Invalid Date) gibt die Methode NaN zurück.

Rückgabewert

Typ
number
Beschreibung
Das Jahr in lokaler Zeit minus 1900 (z. B. 124 für 2024, -100 für 1800). NaN, wenn das Datum ungültig ist.

Beispiele

Grundverhalten: Jahr minus 1900

const daten = [
  new Date(1800, 0, 1),
  new Date(1995, 11, 17),
  new Date(2000, 0, 1),
  new Date(2024, 5, 15)
];

for (const d of daten) {
  console.log(d.getFullYear(), '→', d.getYear());
}
1800 → -100 1995 → 95 2000 → 100 2024 → 124

Typischer Jahr-2000-Fehler in Altcode

const heute = new Date(2024, 0, 10);

// Fehlerhaft: so wurde es früher oft geschrieben
const falsch = '19' + heute.getYear();

// Korrekt
const richtig = String(heute.getFullYear());

console.log(falsch);
console.log(richtig);
19124 2024

Altcode migrieren: getYear() sicher ersetzen

// Hilfsfunktion, falls ein Wert aus getYear() vorliegt
const vollesJahrAusGetYear = (wert) => wert + 1900;

const d = new Date('2023-08-01T12:00:00');
console.log(vollesJahrAusGetYear(d.getYear()));
console.log(d.getFullYear()); // bevorzugte Variante

// Ungültiges Datum
console.log(new Date('kein Datum').getYear());
2023 2023 NaN

// Wichtig · Fallstricke

  • Veraltet: getYear() ist nur in Anhang B der Spezifikation („Legacy-Features für Webbrowser“) definiert. Nicht-Browser-Umgebungen müssen sie nicht zwingend anbieten, auch wenn Node.js, Deno und alle großen Browser sie unterstützen.
  • Keine zweistellige Jahreszahl: Ab 2000 ist der Wert dreistellig (100, 124 …), vor 1900 negativ. Wer zweistellige Jahre braucht, nutzt String(d.getFullYear()).slice(-2) oder Intl.DateTimeFormat mit { year: '2-digit' }.
  • Historisch uneinheitlich: Ältere Browser (z. B. alte Internet-Explorer-Versionen) gaben für Jahre ab 2000 teilweise die volle Jahreszahl zurück. Heutige Engines folgen der Spezifikation (Jahr − 1900).
  • Das Gegenstück setYear() ist ebenfalls veraltet; stattdessen setFullYear() verwenden.
  • Die Methode arbeitet mit lokaler Zeit – rund um Silvester kann sich das Ergebnis je nach Zeitzone von einer UTC-basierten Berechnung unterscheiden.