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

浏览器兼容性

另见