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

瀏覽器相容性

另見