Temporal.ZonedDateTime.prototype.day

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

Temporal.ZonedDateTime 实例的 day 访问器属性返回一个正整数,表示该日期在月份中的基于 1 的日期索引,与你在日历上看到的日期数字相同。它取决于日历

day 的设置器为 undefined。你不能直接更改此属性。请使用 with() 方法创建一个具有所需新值的新的 Temporal.ZonedDateTime 对象。

有关一般信息和更多示例,请参见 Temporal.PlainDate.prototype.day

对于 PlainDate,如果日历跳过天数,day 才会是非连续的。对于 ZonedDateTime,如果时区将其偏移量更改 24 小时,day 也可以是非连续的;这种情况确实发生过。请参见下面的示例。

示例

使用 day

js
const dt = Temporal.ZonedDateTime.from("2021-07-01[America/New_York]"); // ISO 8601 calendar
console.log(dt.day); // 1

非连续的 day

为了更好地与亚洲的贸易伙伴对齐时间,萨摩亚国将其时区更改到国际日期变更线的另一侧,将其偏移量从 -10:00 更改为 +14:00(夏令时)。这导致当地时间 abrupt 改变 24 小时,因此完全跳过了 2011 年 12 月 30 日。2011-12-29T23:59:59-10:00[Pacific/Apia] 紧接着是 2011-12-31T00:00:00+14:00[Pacific/Apia]

js
const dt = Temporal.ZonedDateTime.from(
  "2011-12-29T23:59:59-10:00[Pacific/Apia]",
);
console.log(dt.day); // 29
const nextDay = dt.add({ seconds: 1 });
console.log(nextDay.day); // 31

因此,在操作日期和时间时,应始终首选 add()subtract(),而不是直接更改 day 属性。

规范

规范
Temporal
# sec-get-temporal.zoneddatetime.prototype.day

浏览器兼容性

另见