Temporal.PlainDateTime

可用性有限

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

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

Temporal.PlainDateTime 对象表示没有时区的日期(日历日期)和时间(挂钟时间)。它从根本上表示为日期(以及相关的日历系统)和时间的组合。

描述

PlainDateTime 本质上是 Temporal.PlainDateTemporal.PlainTime 的组合。由于日期和时间信息之间没有太多交互,因此所有关于日期属性的一般信息都记录在 PlainDate 对象中,所有关于时间属性的一般信息都记录在 PlainTime 对象中。

如果日期时间表示应在不同时区保持不变的特定瞬间,则应改用 Temporal.ZonedDateTime 对象。当需要表示在特定挂钟时间发生的事件(该事件可能在不同时区是不同的瞬间)时,请使用 PlainDateTime

RFC 9557 格式

PlainDateTime 对象可以使用 RFC 9557 格式进行序列化和解析,该格式是 ISO 8601 / RFC 3339 格式的扩展。该字符串具有以下形式(空格仅用于可读性,不应出现在实际字符串中)

YYYY-MM-DD T HH:mm:ss.sssssssss [u-ca=calendar_id]
YYYY

一个四位数,或者一个带 +- 号的六位数。

MM

一个从 0112 的两位数。

DD

一个从 0131 的两位数。YYYYMMDD 部分可以用 - 分隔或不用。

T 可选

日期时间分隔符,可以是 Tt 或空格。当且仅当 HH 存在时才出现。

HH 可选

一个两位数,从 0023。默认为 00

mm 可选

一个从 0059 的两位数。默认为 00

ss.sssssssss 可选

一个从 0059 的两位数。可以选择后跟 ., 和一到九位数字。默认为 00HHmmss 部分可以用 : 分隔或不用。你可以只省略 ss 或同时省略 ssmm,因此时间可以有三种形式:HHHH:mmHH:mm:ss.sssssssss

[u-ca=calendar_id] 可选

calendar_id 替换为要使用的日历。有关常用支持的日历类型列表,请参阅 Intl.supportedValuesOf()。默认为 [u-ca=iso8601]。可以通过在键前加 ! 来添加关键标志:例如 [!u-ca=iso8601]。这个标志通常告诉其他系统,如果它们不支持它,就不能忽略它。如果注解包含两个或多个日历注解且其中一个是关键的,Temporal 解析器将抛出错误。请注意,YYYY-MM-DD 始终被解释为 ISO 8601 日历日期,然后转换为指定的日历。

作为输入,你可以选择包含偏移量和时区标识符,格式与 ZonedDateTime 相同,但它们将被忽略。请注意,偏移量不能Z[key=value] 格式的其他注释也会被忽略,并且它们不能具有关键标志。

序列化时,你可以配置小数秒位数、是否显示日历 ID 以及是否为其添加关键标志。

构造函数

Temporal.PlainDateTime() 实验性

通过直接提供底层数据来创建新的 Temporal.PlainDateTime 对象。

静态方法

Temporal.PlainDateTime.compare() 实验性

返回一个数字(-1、0 或 1),指示第一个日期时间是早于、等于还是晚于第二个日期时间。相当于先比较它们的日期,如果日期相同,则比较它们的时间。

Temporal.PlainDateTime.from() 实验性

从另一个 Temporal.PlainDateTime 对象、具有日期和时间属性的对象或 RFC 9557 字符串创建新的 Temporal.PlainDateTime 对象。

实例属性

这些属性定义在 Temporal.PlainDateTime.prototype 上,并由所有 Temporal.PlainDateTime 实例共享。

Temporal.PlainDateTime.prototype.calendarId 实验性

返回一个字符串,表示用于解释内部 ISO 8601 日期的日历

Temporal.PlainDateTime.prototype.constructor

创建实例对象的构造函数。对于 Temporal.PlainDateTime 实例,初始值是 Temporal.PlainDateTime() 构造函数。

Temporal.PlainDateTime.prototype.day 实验性

返回一个正整数,表示此日期在本月中的基于 1 的日期索引,这与你在日历上看到的日期数字相同。依赖于日历。通常从 1 开始并且是连续的,但并非总是如此。

Temporal.PlainDateTime.prototype.dayOfWeek 实验性

返回一个正整数,表示此日期在星期中的 1-based 天索引。星期中的天数从 1daysInWeek 顺序编号,每个数字都映射到其名称。日历相关。在日历中,1 通常表示星期一,即使使用该日历的语言环境可能将不同的日子视为一周的第一天(请参阅 Intl.Locale.prototype.getWeekInfo())。

Temporal.PlainDateTime.prototype.dayOfYear 实验性

返回一个正整数,表示此日期在一年中的 1-based 天索引。这一年的第一天是 1,最后一天是 daysInYear日历相关。

Temporal.PlainDateTime.prototype.daysInMonth 实验性

返回一个正整数,表示此日期所在月份的天数。依赖于日历

Temporal.PlainDateTime.prototype.daysInWeek 实验性

返回一个正整数,表示此日期所在星期中的天数。依赖于日历。对于 ISO 8601 日历,这总是 7,但在其他日历系统中,每周可能不同。

Temporal.PlainDateTime.prototype.daysInYear 实验性

返回一个正整数,表示此日期所在年份的天数。依赖于日历。对于 ISO 8601 日历,这是 365,闰年是 366。

Temporal.PlainDateTime.prototype.era 实验性

返回一个日历特定的小写字符串,表示此日期的纪元,如果日历不使用纪元(例如 ISO 8601),则返回 undefinederaeraYear 一起唯一地标识日历中的一年,就像 year 一样。依赖于日历。对于格里高利历,它是 "gregory""gregory-inverse"

Temporal.PlainDateTime.prototype.eraYear 实验性

返回一个非负整数,表示此日期在纪元内的年份,如果日历不使用纪元(例如 ISO 8601),则返回 undefined。年份索引通常从 1(更常见)或 0 开始,一个纪元内的年份可以随时间减少(例如格里高利历的公元前)。eraeraYear 一起唯一地标识日历中的一年,就像 year 一样。依赖于日历

Temporal.PlainDateTime.prototype.hour 实验性

返回一个从 0 到 23 的整数,表示此时间的小时部分。

Temporal.PlainDateTime.prototype.inLeapYear 实验性

返回一个布尔值,指示此日期是否在闰年。闰年是指比平年有更多天数(由于闰日或闰月)的年份。依赖于日历

Temporal.PlainDateTime.prototype.microsecond 实验性

返回一个从 0 到 999 的整数,表示此时间的微秒(10-6 秒)部分。

Temporal.PlainDateTime.prototype.millisecond 实验性

返回一个从 0 到 999 的整数,表示此时间的毫秒(10-3 秒)部分。

Temporal.PlainDateTime.prototype.minute 实验性

返回一个从 0 到 59 的整数,表示此时间的分钟部分。

Temporal.PlainDateTime.prototype.month 实验性

返回一个正整数,表示此日期在一年中的 1-based 月份索引。这一年的第一个月是 1,最后一个月是 monthsInYear日历相关。请注意,与 Date.prototype.getMonth() 不同,索引是 1-based。如果日历有闰月,则具有相同 monthCode 的月份在不同年份可能具有不同的 month 索引。

Temporal.PlainDateTime.prototype.monthCode 实验性

返回一个日历特定的字符串,表示此日期的月份。依赖于日历。通常是 M 加上一个两位数的月份编号。对于闰月,它是上一个月的代码后跟 L。如果闰月是一年中的第一个月,代码是 M00L

Temporal.PlainDateTime.prototype.monthsInYear 实验性

返回一个正整数,表示此日期所在年份的月份数。依赖于日历。对于 ISO 8601 日历,这总是 12,但在其他日历系统中可能会有所不同。

Temporal.PlainDateTime.prototype.nanosecond 实验性

返回一个从 0 到 999 的整数,表示此时间的纳秒(10-9 秒)部分。

Temporal.PlainDateTime.prototype.second 实验性

返回一个从 0 到 59 的整数,表示此时间的秒部分。

Temporal.PlainDateTime.prototype.weekOfYear 实验性

返回一个正整数,表示此日期在 yearOfWeek 中的 1-based 星期索引,如果日历没有明确定义的星期系统,则返回 undefined。一年中的第一周是 1日历相关。请注意,对于 ISO 8601,一年中的最初几天和最后几天可能被归属于上一年或下一年的最后一周或第一周。

Temporal.PlainDateTime.prototype.year 实验性

返回一个整数,表示此日期的年份,相对于日历特定的纪元开始年份。依赖于日历。通常,第 1 年是最新纪元的第一年或 ISO 8601 的 0001 年。如果纪元在年中开始,该年在纪元开始日期前后将具有相同的值。

Temporal.PlainDateTime.prototype.yearOfWeek 实验性

返回一个整数,表示与此日期的 weekOfYear 配对的年份,如果日历没有明确定义的星期系统,则返回 undefined日历相关。这通常是日期的年份,但对于 ISO 8601,一年中的最初几天和最后几天可能归属于上一年或下一年的最后一周或第一周,导致 yearOfWeek 相差 1。

Temporal.PlainDateTime.prototype[Symbol.toStringTag]

[Symbol.toStringTag] 属性的初始值是字符串 "Temporal.PlainDateTime"。此属性在 Object.prototype.toString() 中使用。

实例方法

Temporal.PlainDateTime.prototype.add() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间向前移动给定持续时间(以可由 Temporal.Duration.from() 转换的形式)。

Temporal.PlainDateTime.prototype.equals() 实验性

如果此日期时间的值与另一个日期时间(以可由 Temporal.PlainDateTime.from() 转换的形式)等效,则返回 true,否则返回 false。它们通过日期和时间值以及日历进行比较,因此来自不同日历的两个日期时间可能通过 Temporal.PlainDateTime.compare() 被视为相等,但通过 equals() 则不相等。

Temporal.PlainDateTime.prototype.round() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间按给定单位四舍五入。

Temporal.PlainDateTime.prototype.since() 实验性

返回一个新的 Temporal.Duration 对象,表示从另一个日期时间(以可由 Temporal.PlainDateTime.from() 转换的形式)到此日期时间的持续时间。如果另一个日期时间在此日期时间之前,则持续时间为正,如果之后,则为负。

Temporal.PlainDateTime.prototype.subtract() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间向后移动给定持续时间(以可由 Temporal.Duration.from() 转换的形式)。

Temporal.PlainDateTime.prototype.toJSON() 实验性

返回一个字符串,表示此日期时间采用与调用 toString() 相同的 RFC 9557 格式。旨在由 JSON.stringify() 隐式调用。

Temporal.PlainDateTime.prototype.toLocaleString() 实验性

返回一个带有此日期时间语言敏感表示的字符串。

Temporal.PlainDateTime.prototype.toPlainDate() 实验性

返回一个新的 Temporal.PlainDate 对象,表示此日期时间在同一日历系统中的日期部分(年、月、日)。

Temporal.PlainDateTime.prototype.toPlainTime() 实验性

返回一个新的 Temporal.PlainTime 对象,表示此日期时间的时间部分(小时、分钟、秒和亚秒组件)。

Temporal.PlainDateTime.prototype.toString() 实验性

返回一个字符串,表示此日期时间采用 RFC 9557 格式

Temporal.PlainDateTime.prototype.toZonedDateTime() 实验性

返回一个新的 Temporal.ZonedDateTime 实例,表示与此普通日期时间相同的日期时间,但在指定的时区。

Temporal.PlainDateTime.prototype.until() 实验性

返回一个新的 Temporal.Duration 对象,表示从此日期时间到另一个日期时间(以可由 Temporal.PlainDateTime.from() 转换的形式)的持续时间。如果另一个日期时间在此日期时间之后,则持续时间为正,如果之前,则为负。

Temporal.PlainDateTime.prototype.valueOf() 实验性

抛出 TypeError,这会阻止 Temporal.PlainDateTime 实例在算术或比较操作中被隐式转换为原始值

Temporal.PlainDateTime.prototype.with() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间的一些字段被新值替换。

Temporal.PlainDateTime.prototype.withCalendar() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间在新日历系统中解释。

Temporal.PlainDateTime.prototype.withPlainTime() 实验性

返回一个新的 Temporal.PlainDateTime 对象,表示此日期时间的时间部分完全被新时间替换(以可由 Temporal.PlainTime.from() 转换的形式)。

规范

规范
Temporal
# sec-temporal-plaindatetime-objects

浏览器兼容性

另见