Signatur
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
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()]);
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
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());
Lokalisierter Wochentagsname via Intl
const datum = new Date(2024, 11, 24);
const name = datum.toLocaleDateString('de-DE', { weekday: 'long' });
console.log(name);
// 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) % 7um. - 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')gibtgetDay()NaNzurück – vor der Verwendung als Array-Index prüfen. - Wird in allen Browsern und in Node.js seit jeher unterstützt.