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

Date.prototype.getDay()

Methode

Gibt den Wochentag eines <code>Date</code>-Objekts gemäß Ortszeit als Zahl von 0 (Sonntag) bis 6 (Samstag) zurück.

seit JavaScript ES1 – Baseline: alle Browser Kategorie: method-property

Signatur

Date.prototype.getDay()

Beschreibung

Die Methode getDay() liefert den Wochentag eines Datums als ganze Zahl zwischen 0 und 6. Dabei steht 0 für Sonntag, 1 für Montag und so weiter bis 6 für Samstag. Die Berechnung erfolgt in der lokalen Zeitzone des ausführenden Systems.

Typische Einsatzfälle sind Wochenend-Prüfungen, Kalenderansichten, Öffnungszeiten-Logik oder das Umrechnen auf eine Woche, die am Montag beginnt (ISO 8601). Für den Namen des Wochentags ist Intl.DateTimeFormat bzw. toLocaleDateString() meist besser geeignet als ein eigenes Array mit Namen, da die Ausgabe dann automatisch lokalisiert wird.

Nicht verwechseln mit getDate(): Diese Methode liefert den Tag im Monat (1–31), während getDay() den Wochentag liefert. Wird der Wochentag unabhängig von der lokalen Zeitzone benötigt, verwendet man getUTCDay().

Rückgabewert

Typ
number
Beschreibung
Ganze Zahl von 0 (Sonntag) bis 6 (Samstag) in Ortszeit. Bei einem ungültigen Datum wird NaN zurückgegeben.

Beispiele

Wochentag eines Datums ermitteln

const datum = new Date(2024, 11, 24); // 24. Dezember 2024 (Monat ist 0-basiert)
const tage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'];

console.log(datum.getDay());
console.log(tage[datum.getDay()]);
2 Dienstag

Prüfen, ob ein Datum auf ein Wochenende fällt

const istWochenende = (date) => {
  const tag = date.getDay();
  return tag === 0 || tag === 6;
};

console.log(istWochenende(new Date(2024, 5, 15))); // Samstag
console.log(istWochenende(new Date(2024, 5, 17))); // Montag
true false

Montag der aktuellen Woche berechnen (ISO-Woche)

const wochenStart = (date) => {
  const d = new Date(date);
  // Sonntag (0) auf 6 abbilden, Montag auf 0
  const isoIndex = (d.getDay() + 6) % 7;
  d.setDate(d.getDate() - isoIndex);
  d.setHours(0, 0, 0, 0);
  return d;
};

console.log(wochenStart(new Date(2024, 11, 26)).toDateString());
Mon Dec 23 2024

Lokalisierter Wochentagsname via Intl

const datum = new Date(2024, 11, 24);
const name = datum.toLocaleDateString('de-DE', { weekday: 'long' });
console.log(name);
Dienstag

// Wichtig · Fallstricke

  • Sonntag ist 0: Die Woche beginnt in JavaScript am Sonntag. Für ISO-8601-Wochen (Montag = erster Tag) rechnet man mit (getDay() + 6) % 7 um.
  • Verwechslungsgefahr: getDay() ≠ getDate(). Letztere liefert den Tag im Monat.
  • Zeitzonen: Das Ergebnis hängt von der lokalen Zeitzone ab. Ein Zeitstempel wie new Date('2024-12-24T23:30:00Z') kann in Berlin bereits Mittwoch sein. Für zeitzonenunabhängige Logik (z. B. auf Servern) getUTCDay() verwenden.
  • Ungültige Daten: Bei new Date('ungültig') gibt getDay() NaN zurück – vor der Verwendung als Array-Index prüfen.
  • Wird in allen Browsern und in Node.js seit jeher unterstützt.