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
。要更改一年中的第几天,您需要先计算出与您期望的年内天数之间的天数差,然后使用 add
或 subtract
来相应地调整日期。例如,要更改为今年的第 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 |
浏览器兼容性
加载中…