Temporal.Now

可用性有限

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

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

Temporal.Now 命名空间对象包含用于以各种格式获取当前时间的静态方法。

描述

与大多数全局对象不同,Temporal.Now 不是一个构造函数。您不能使用 new 运算符 或将 Temporal.Now 对象调用为函数。Temporal.Now 的所有属性和方法都是静态的(就像 Math 对象一样)。

最根本的是,系统时间由操作系统以自 Unix 纪元以来的时间(通常是毫秒级精度,但也可能是纳秒级)返回。 Temporal.Now.instant() 将此时间作为 Temporal.Instant 对象返回。

可以像 Temporal.Instant.prototype.toZonedDateTimeISO() 一样,在时区(默认为系统时区 Temporal.Now.timeZoneId())中解释一个时间点。要获取 Temporal.ZonedDateTime 对象,您可以使用 Temporal.Now.zonedDateTimeISO()。您还可以使用 Temporal.Now.plainDateISO()Temporal.Now.plainTimeISO()Temporal.Now.plainDateTimeISO() 来获取日期和时间的各个部分。

例如,如果计算机设置为“America/New_York”时区,Temporal.Now.zonedDateTimeISO() 将返回一个带时区的日期时间,例如:2021-08-01T10:40:12.345-04:00[America/New_York]。在这种情况下,Temporal.Now.plainTimeISO() 将返回此带时区日期时间的时间部分:10:40:12.345。但是,如果您调用 Temporal.Now.plainTimeISO("UTC"),它将返回 UTC 时区中带时区日期时间的时间部分:14:40:12.345。这对于跨系统通信特别有用,因为另一端可能期望以不同的时区接收时间。

时间精度降低

为防止计时攻击和指纹识别Temporal.Now 函数的精度可能会根据浏览器设置进行舍入。在 Firefox 中,privacy.reduceTimerPrecision 首选项默认启用,默认为 2ms。您也可以启用 privacy.resistFingerprinting,在这种情况下,精度将为 100ms 或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds 的值(取较大者)。

例如,在降低时间精度的情况下,Temporal.Now.instant().epochMilliseconds 的结果将始终是 2 的倍数,或者在启用 privacy.resistFingerprinting 的情况下是 100 的倍数(或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds 的倍数)。

js
// reduced time precision (2ms) in Firefox 60
Temporal.Now.instant().epochMilliseconds;
// Might be:
// 1519211809934
// 1519211810362
// 1519211811670
// …

// reduced time precision with `privacy.resistFingerprinting` enabled
Temporal.Now.instant().epochMilliseconds;
// Might be:
// 1519129853500
// 1519129858900
// 1519129864400
// …

静态属性

Temporal.Now[Symbol.toStringTag]

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

静态方法

Temporal.Now.instant() 实验性

Temporal.Instant 对象形式返回当前时间。

Temporal.Now.plainDateISO() 实验性

以 ISO 8601 日历和指定时区中的 Temporal.PlainDate 对象形式返回当前日期。

Temporal.Now.plainDateTimeISO() 实验性

以 ISO 8601 日历和指定时区中的 Temporal.PlainDateTime 对象形式返回当前日期和时间。

Temporal.Now.plainTimeISO() 实验性

以指定时区中的 Temporal.PlainTime 对象形式返回当前时间。

Temporal.Now.timeZoneId() 实验性

返回一个表示系统当前时区的时区标识符

Temporal.Now.zonedDateTimeISO() 实验性

以 ISO 8601 日历和指定时区中的 Temporal.ZonedDateTime 对象形式返回当前日期和时间。

规范

规范
Temporal
# sec-temporal-now-object

浏览器兼容性

另见