Temporal.PlainDate.prototype.dayOfYear

可用性有限

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

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

dayOfYear 訪問器屬性,屬於 Temporal.PlainDate 例項,返回一個正整數,表示該日期在一年中的基於 1 的索引。一年的第一天是 1,最後一天是 daysInYear。它取決於 日曆

dayOfYear 的 set 訪問器是 undefined。您不能直接更改此屬性。要建立具有所需新 dayOfYear 值的新 Temporal.PlainDate 物件,請使用 add()subtract() 方法,並指定適當的 days 數量。

示例

使用 dayOfYear

js
const date = Temporal.PlainDate.from("2021-07-01");
console.log(date.dayOfYear); // 182

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

const date3 = Temporal.PlainDate.from("2020-07-01");
console.log(date3.dayOfYear); // 183; 2020 is a leap year

更改 dayOfYear

PlainDate 不支援直接更改 dayOfYear。要更改一年中的第幾天,您需要先計算出與您期望的年內天數之間的天數差,然後使用 addsubtract 來相應地調整日期。例如,要更改為今年的第 100 天(無論是在之前還是之後)

js
function getDayInSameYear(date, destDayOfYear) {
  return date.add({ days: destDayOfYear - date.dayOfYear });
}

console.log(
  getDayInSameYear(Temporal.PlainDate.from("2021-07-01"), 100).toString(),
); // 2021-04-10
console.log(
  getDayInSameYear(Temporal.PlainDate.from("2021-01-01"), 100).toString(),
); // 2021-04-10
console.log(
  getDayInSameYear(Temporal.PlainDate.from("2020-01-01"), 100).toString(),
); // 2020-04-09

預設情況下,with() 會將日期限制在有效值的範圍內。因此,您始終可以使用 { month: 1, day: 1 } 將日期設定為該年的第一天,即使第一天不是數字 1。類似地,以下程式碼會將日期設定為該年的最後一天,而不管最後一個月或年份有多少天。

js
const date = Temporal.PlainDate.from("2021-07-01");
const lastDay = date.with({ month: Number.MAX_VALUE, day: Number.MAX_VALUE }); // 2021-12-31

規範

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

瀏覽器相容性

另見