Temporal.PlainDate.prototype.day

可用性有限

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

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

day 访问器属性是 Temporal.PlainDate 实例的属性,用于返回一个表示此日期所在月份的 1 基日期索引的正整数。这与日历上显示的日期编号相同。它依赖于日历

它通常从 1 开始并且是连续的,但并非总是如此。如果您想遍历月份中的所有日期,请先使用带有 { day: 1 }with() 方法(这将设置为月份的开始,即使实际数字不是 1),然后重复使用带有 { days: 1 }add() 方法,直到月份发生变化。

注意: 通常,日期索引仅在从一个日历系统过渡到另一个日历系统时才会改变,例如从儒略历到格里高利历。实际上,所有当前内置的日历都是外推的,这意味着日历系统被无限地扩展到过去和未来。假定 day 是非连续的,可以防止未来引入非外推日历。

day 的设置访问器是 undefined。您不能直接更改此属性。请使用 with() 方法创建一个新的 Temporal.PlainDate 对象,并带有您想要的新值。

示例

使用 day

js
const date = Temporal.PlainDate.from("2021-07-01"); // ISO 8601 calendar
console.log(date.day); // 1

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=chinese]");
console.log(date2.day); // 22; it is May 22 in the Chinese calendar

遍历月份中的所有日期

js
const month = Temporal.PlainDate.from("2021-07-14"); // An arbitrary date in the month
for (
  let day = month.with({ day: 1 });
  day.month === month.month;
  day = day.add({ days: 1 })
) {
  console.log(day.day);
}

更改日期

js
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.with({ day: 15 });
console.log(newDate.toString()); // 2021-07-15

您还可以使用 add()subtract() 方法,从当前日期开始移动指定的日数。

js
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.add({ days: 14 });
console.log(newDate.toString()); // 2021-07-15

默认情况下,with() 会将日期约束在有效值的范围内。因此,您可以使用 { day: 1 } 将日期设置为月份的第一天,即使第一天不是数字 1。同样,以下代码会将日期设置为月份的最后一天:

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

注意: 避免使用 daysInMonth 来设置月份的最后一天。在罕见的月份跳过几天的imerick情况下,月份的最后一天并不总是与该月份的总天数相同。

规范

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

浏览器兼容性

另见