Die Methode Date.prototype.getDay() gibt den Wochentag eines Date-Objekts in der lokalen Zeitzone zurück. Im Gegensatz zu getDate(), das den Tag des Monats liefert, gibt getDay() einen 0-basierten Wochentagsindex zurück. Wichtig zu wissen: Die Zählung beginnt bei 0 für Sonntag – nicht für Montag, wie es in Deutschland kalendarisch üblich wäre. Diese amerikanische Konvention führt häufig zu Verwirrung und ist eine klassische Fehlerquelle bei der Internationalisierung von Datumslogik.
Funktionsweise
getDay() liest aus dem Date-Objekt den Wochentag aus und liefert eine Ganzzahl zwischen 0 und 6. Die Zuordnung lautet:
| Wert | Wochentag (DE) | Wochentag (EN) |
|---|---|---|
| 0 | Sonntag | Sunday |
| 1 | Montag | Monday |
| 2 | Dienstag | Tuesday |
| 3 | Mittwoch | Wednesday |
| 4 | Donnerstag | Thursday |
| 5 | Freitag | Friday |
| 6 | Samstag | Saturday |
Da die Zählung mit Sonntag beginnt, muss beim Mapping auf deutsche Wochentagsbezeichnungen oder bei der ISO-8601-konformen Wochentagslogik (Montag = 1, Sonntag = 7) entsprechend transformiert werden.
Syntax
date.getDay()Die Methode erwartet keine Parameter.
Rückgabewert
Eine Ganzzahl zwischen 0 (Sonntag) und 6 (Samstag), die den Wochentag in der lokalen Zeitzone repräsentiert. Bei einem ungültigen Datum wird NaN zurückgegeben.
Beispiele
Wochentag eines Datums ermitteln
const date = new Date("2026-05-01");
console.log(date.getDay());5Der 1. Mai 2026 ist ein Freitag, daher der Rückgabewert 5.
Mapping auf deutsche Wochentagsnamen
const tage = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
function deutscherWochentag(date) {
return tage[date.getDay()];
}
console.log(deutscherWochentag(new Date("2026-05-01")));
console.log(deutscherWochentag(new Date("2026-12-24")));Freitag
DonnerstagPrüfen, ob ein Datum auf ein Wochenende fällt
Da Samstag (6) und Sonntag (0) die einzigen Wochenend-Werte sind, lässt sich eine Wochenend-Prüfung mit einer einzigen Bedingung formulieren.
function isWeekend(date) {
const day = date.getDay();
return day === 0 || day === 6;
}
console.log(isWeekend(new Date("2026-05-01"))); // Freitag
console.log(isWeekend(new Date("2026-05-02"))); // Samstag
console.log(isWeekend(new Date("2026-05-03"))); // Sonntagfalse
true
trueKonvertierung in ISO-8601-Wochentag
Im internationalen Standard ISO 8601 beginnt die Woche mit Montag (1) und endet mit Sonntag (7). Diese Konvention wird in vielen europäischen Anwendungen erwartet.
function isoWochentag(date) {
const day = date.getDay();
return day === 0 ? 7 : day;
}
console.log(isoWochentag(new Date("2026-05-03"))); // Sonntag
console.log(isoWochentag(new Date("2026-05-04"))); // Montag7
1Nächsten Werktag finden
Eine typische Geschäftslogik: Wenn das angefragte Datum auf ein Wochenende fällt, soll auf den nächsten Werktag (Montag) gesprungen werden.
function naechsterWerktag(date) {
const result = new Date(date);
while (result.getDay() === 0 || result.getDay() === 6) {
result.setDate(result.getDate() + 1);
}
return result;
}
const samstag = new Date("2026-05-02");
console.log(naechsterWerktag(samstag).toISOString().slice(0, 10));2026-05-04Hinweise & verwandte Methoden
- Die Sonntag-zuerst-Konvention ist eine häufige Fehlerquelle. In Code-Reviews lohnt es sich, jede Verwendung von
getDay()daraufhin zu prüfen. - Für lokalisierte Wochentagsnamen ohne manuelles Mapping eignet sich
Intl.DateTimeFormatmit der Option{ weekday: "long" }. - Die zeitzonenunabhängige Variante ist
Date.prototype.getUTCDay(). - Es gibt keinen Setter
setDay()– um auf einen bestimmten Wochentag zu springen, muss mitsetDate()und der Differenz zum aktuellen Wochentag gearbeitet werden.