Temporal.PlainDate.prototype.dayOfWeek

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

dayOfWeek 訪問器屬性,屬於 Temporal.PlainDate 例項,返回一個正整數,表示此日期在一週中的基於 1 的索引。一週中的天數按順序從 1 編號到 daysInWeek,每個數字都對映到其名稱。它依賴於 日曆。1 通常表示日曆中的星期一,即使使用該日曆的區域設定可能認為不同的日期是星期中的第一天(請參閱 Intl.Locale.prototype.getWeekInfo())。

所有常用支援的日曆都使用 7 天的周,並且通常可以預期此屬性在不同日曆上對同一日期返回相同的值。

dayOfWeek 的 setter 訪問器為 undefined。您不能直接修改此屬性。要建立一個具有所需新 dayOfWeek 值的 Temporal.PlainDate 物件,請使用 add()subtract() 方法並提供適當的 days 值。

示例

使用 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

更改 dayOfWeek

PlainDate 不支援直接更改 dayOfWeek。要更改星期幾,您需要先計算出與您想要的星期幾之間的天數差,然後使用 addsubtract 來相應地調整日期。例如,要更改為本週的星期五(無論是在之前還是之後)

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

更改為下一個星期五

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

更改為上一個星期五

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

規範

規範
Temporal
# sec-get-temporal.plaindate.prototype.dayofweek

瀏覽器相容性

另見