Temporal.PlainDate.prototype.dayOfWeek

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die dayOfWeek Zugriffs-Eigenschaft von Temporal.PlainDate Instanzen gibt eine positive ganze Zahl zurück, die den 1-basierten Tagesindex in der Woche dieses Datums darstellt. Die Tage in einer Woche werden von 1 bis daysInWeek durchnummeriert, wobei jede Zahl ihrem Namen zugeordnet ist. Diese Eigenschaft ist kalenderabhängig (calendar). In der Regel steht 1 für Montag im Kalender, auch wenn in einigen Regionen, die denselben Kalender verwenden, ein anderer Tag als erster Wochentag betrachtet wird (siehe Intl.Locale.prototype.getWeekInfo()).

Alle gängig unterstützten Kalender verwenden Wochen mit 7 Tagen, und Sie können im Allgemeinen erwarten, dass diese Eigenschaft für dasselbe Datum in verschiedenen Kalendern denselben Wert zurückgibt.

Der Set-Zugriffsoperator von dayOfWeek ist undefined. Sie können diese Eigenschaft nicht direkt ändern. Um ein neues Temporal.PlainDate Objekt mit dem gewünschten neuen dayOfWeek Wert zu erstellen, verwenden Sie die Methode add() oder subtract() mit der entsprechenden Anzahl von days.

Beispiele

Verwendung von dayOfWeek

js
const date = Temporal.PlainDate.from("2021-07-01");
console.log(date.dayOfWeek); // 4; Thursday

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=chinese]");
console.log(date2.dayOfWeek); // 4

Ändern von dayOfWeek

PlainDate unterstützt das direkte Ändern von dayOfWeek nicht. Um den Wochentag zu ändern, müssen Sie zuerst die Differenz in Tagen zu Ihrem gewünschten Wochentag ermitteln und dann add oder subtract verwenden, um das Datum entsprechend anzupassen. Zum Beispiel, um auf den Freitag dieser Woche (ob davor oder danach) zu wechseln:

js
function getDayInSameWeek(date, destDayOfWeek) {
  return date.add({ days: destDayOfWeek - date.dayOfWeek });
}

console.log(
  getDayInSameWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-07-02
console.log(
  getDayInSameWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-02

Um zum nächsten Freitag zu wechseln:

js
function getNextDayInWeek(date, destDayOfWeek) {
  const distance = destDayOfWeek - date.dayOfWeek;
  return date.add({
    days: distance < 0 ? date.daysInWeek + distance : distance,
  });
}

console.log(
  getNextDayInWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-07-02
console.log(
  getNextDayInWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-09

Um zum vorherigen Freitag zu wechseln:

js
function getPreviousDayInWeek(date, destDayOfWeek) {
  const distance = date.dayOfWeek - destDayOfWeek;
  return date.subtract({
    days: distance < 0 ? date.daysInWeek + distance : distance,
  });
}

console.log(
  getPreviousDayInWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-06-25
console.log(
  getPreviousDayInWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-02

Spezifikationen

Specification
Temporal
# sec-get-temporal.plaindate.prototype.dayofweek

Browser-Kompatibilität

Siehe auch