Start · Sprachen · JavaScript · Referenz · Temporal.PlainDate.prototype.dayOfWeek

Temporal.PlainDate.prototype.dayOfWeek

Eigenschaft

Liefert den Wochentag eines <code>Temporal.PlainDate</code> als Ganzzahl ab 1. Im ISO-Kalender steht 1 für Montag und 7 für Sonntag.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, Safa Kategorie: method-property

Signatur

get Temporal.PlainDate.prototype.dayOfWeek

Beschreibung

Die Zugriffseigenschaft dayOfWeek gibt für ein Temporal.PlainDate zurück, auf welchen Tag der Woche das Datum fällt. Der Wert beginnt bei 1. Im ISO-8601-Kalender ("iso8601") und im gregorianischen Kalender gilt 1 = Montag bis 7 = Sonntag.

Genau hier liegt der Unterschied zu Date.prototype.getDay(). Die alte Methode zählt ab 0 und beginnt mit Sonntag, also 0 = Sonntag bis 6 = Samstag. dayOfWeek hält sich dagegen an ISO 8601 und damit an die in Europa übliche Woche. Man muss nicht mehr umrechnen, etwa mit (getDay() + 6) % 7.

Die Eigenschaft ist schreibgeschützt und hat nur einen Getter, es gibt keinen Setter. Um ein Datum auf einen bestimmten Wochentag zu verschieben, rechnet man mit add() oder subtract() und dayOfWeek eine Tagesdifferenz aus. Typische Anwendungen sind das Erkennen von Wochenenden, Kalenderraster, die Suche nach dem nächsten Werktag oder der Beginn einer Woche.

Die Zahl der Tage pro Woche hängt vom Kalender ab und steht in daysInWeek. Bei allen Kalendern, die Temporal derzeit unterstützt, ist sie 7. Die Eigenschaft gibt es genauso bei Temporal.PlainDateTime und Temporal.ZonedDateTime.

Rückgabewert

Typ
number
Beschreibung
Positive Ganzzahl von 1 bis daysInWeek (im ISO-Kalender 1 = Montag … 7 = Sonntag).

Beispiele

Wochentag eines Datums ermitteln

const datum = Temporal.PlainDate.from("2024-12-24");
console.log(datum.dayOfWeek);

// Name des Wochentags über Intl ausgeben
console.log(datum.toLocaleString("de-DE", { weekday: "long" }));
2 Dienstag

Wochenende erkennen

const istWochenende = (d) => d.dayOfWeek >= 6;

const heute = Temporal.PlainDate.from("2025-03-15");
console.log(istWochenende(heute)); // Samstag
console.log(istWochenende(heute.add({ days: 2 }))); // Montag
true false

Montag der aktuellen Woche und nächsten Werktag berechnen

const d = Temporal.PlainDate.from("2025-03-13"); // Donnerstag

// Wochenbeginn (Montag)
const montag = d.subtract({ days: d.dayOfWeek - 1 });
console.log(montag.toString());

// Nächster Werktag (Wochenenden überspringen)
const naechsterWerktag = (datum) => {
  let n = datum.add({ days: 1 });
  while (n.dayOfWeek > 5) n = n.add({ days: 1 });
  return n;
};
console.log(naechsterWerktag(Temporal.PlainDate.from("2025-03-14")).toString());
2025-03-10 2025-03-17

Vergleich mit Date.prototype.getDay()

const alt = new Date(2025, 2, 16); // Sonntag
const neu = Temporal.PlainDate.from("2025-03-16");

console.log(alt.getDay());   // 0-basiert, Sonntag = 0
console.log(neu.dayOfWeek);  // 1-basiert, Sonntag = 7
0 7

// Wichtig · Fallstricke

  • Andere Zählweise als Date.getDay(): dayOfWeek beginnt bei 1 mit Montag und endet bei 7 mit Sonntag. getDay() beginnt bei 0 mit Sonntag. Wer alten Code umstellt, übersieht diesen Unterschied leicht. Vergleiche wie === 0 für Sonntag schlagen dann stillschweigend fehl.
  • Nicht als Array-Index verwenden: Weil die Zählung bei 1 beginnt, braucht man bei Namenslisten namen[d.dayOfWeek - 1]. Besser ist toLocaleString(locale, { weekday: "long" }), weil das die Sprache richtig berücksichtigt.
  • Wochenbeginn ist regional unterschiedlich: dayOfWeek folgt immer ISO 8601 mit Montag als erstem Tag. Ob eine Region die Woche am Sonntag oder Samstag beginnt, verrät die Eigenschaft nicht. Diese Information liefert new Intl.Locale("en-US").getWeekInfo(), das allerdings nicht überall unterstützt wird.
  • Schreibgeschützt: Eine Zuweisung ändert nichts und wirft im Strict Mode einen TypeError. Auch with({ dayOfWeek: … }) wird nicht unterstützt.
  • Browser-Unterstützung: Temporal ist neu. Stand 2025 unterstützen es nur Firefox ab Version 139 und Chrome ab Version 144, Safari und ältere Node.js-Versionen noch nicht. Für den Produktiveinsatz eignet sich ein Polyfill wie @js-temporal/polyfill oder temporal-polyfill.