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

Temporal.PlainDateTime.prototype.dayOfWeek

Eigenschaft

Gibt den Wochentag eines <code>Temporal.PlainDateTime</code> als 1-basierte Ganzzahl zurück. Im ISO-Kalender ist <code>1</code> Montag und <code>7</code> Sonntag.

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

Signatur

get Temporal.PlainDateTime.prototype.dayOfWeek

Beschreibung

Die schreibgeschützte Zugriffs-Eigenschaft dayOfWeek liefert die Position des Datums innerhalb seiner Woche als positive Ganzzahl. Die Zählung beginnt bei 1. Im Standardkalender iso8601 gilt die ISO-8601-Zählung: Montag = 1 bis Sonntag = 7. Anders als bei Date.prototype.getDay() ist Sonntag also nicht 0.

Die Eigenschaft hängt vom Kalender ab. Die Uhrzeit des PlainDateTime spielt keine Rolle, nur der Datumsteil zählt. Wie viele Tage eine Woche im jeweiligen Kalender hat, verrät daysInWeek. Der Wert von dayOfWeek liegt immer zwischen 1 und daysInWeek.

Typische Einsatzfälle sind Wochenend- und Werktagsprüfungen, die Berechnung des nächsten bestimmten Wochentags (etwa „nächster Montag“) und das Anordnen von Terminen in Wochenansichten. Für einen lesbaren Wochentagsnamen verwendet man besser toLocaleString() mit der Option { weekday: "long" } als eine selbst gepflegte Namensliste.

Rückgabewert

Typ
number
Beschreibung
Ganzzahl von 1 bis daysInWeek. Im ISO-Kalender steht 1 für Montag und 7 für Sonntag.

Beispiele

Wochentag eines Termins ermitteln

const termin = Temporal.PlainDateTime.from("2024-03-15T09:30");
console.log(termin.dayOfWeek);
// Für den Namen besser die Lokalisierung nutzen
console.log(termin.toLocaleString("de-DE", { weekday: "long" }));
5 Freitag

Wochenende erkennen

const istWochenende = (dt) => dt.dayOfWeek >= 6; // 6 = Samstag, 7 = Sonntag (ISO)

const samstag = Temporal.PlainDateTime.from("2024-03-16T14:00");
const montag = Temporal.PlainDateTime.from("2024-03-18T08:00");
console.log(istWochenende(samstag), istWochenende(montag));
true false

Nächsten Montag zur gleichen Uhrzeit berechnen

const naechsterMontag = (dt) => {
  // Tage bis zum nächsten Montag; ist heute Montag, dann eine Woche später
  const tage = (8 - dt.dayOfWeek) % 7 || 7;
  return dt.add({ days: tage });
};

const jetzt = Temporal.PlainDateTime.from("2024-03-15T09:30");
console.log(naechsterMontag(jetzt).toString());
2024-03-18T09:30:00

Termine nach Wochentag gruppieren

const termine = ["2024-03-11T10:00", "2024-03-13T15:00", "2024-03-18T09:00"]
  .map((s) => Temporal.PlainDateTime.from(s));

const nachTag = Object.groupBy(termine, (t) => t.dayOfWeek);
console.log(Object.keys(nachTag));
[ '1', '3' ]

// Wichtig · Fallstricke

  • Andere Zählung als Date: Date.prototype.getDay() zählt ab Sonntag = 0, dayOfWeek dagegen ab Montag = 1 bis Sonntag = 7. Wer Code von Date portiert, sollte das prüfen, denn hier entstehen oft Fehler um einen Tag.
  • Schreibgeschützt: Die Eigenschaft hat keinen Setter. Auch with({ dayOfWeek: 1 }) wird nicht unterstützt. Um zu einem bestimmten Wochentag zu springen, rechnet man die Differenz aus und verwendet add() oder subtract().
  • Kalenderabhängig: Bei Nicht-ISO-Kalendern können Wochenlänge und Zählung abweichen. Deshalb nicht fest 7 annehmen, sondern daysInWeek verwenden.
  • Nicht an die Region gebunden: Der Wert sagt nichts darüber, mit welchem Tag die Woche in einer Region beginnt (in den USA etwa Sonntag). Dafür gibt es Intl.Locale.prototype.getWeekInfo().
  • Browser-Unterstützung: Temporal ist erst seit Kurzem verfügbar (Firefox 139+, Chrome/Edge 144+). Safari und ältere Node.js-Versionen brauchen einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill.