Temporal.ZonedDateTime.prototype.offsetNanoseconds

可用性有限

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

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

Temporal.ZonedDateTime 实例的 offsetNanoseconds 访问器属性返回一个整数,该整数表示用于解释内部即时时间的偏移量,以纳秒为单位(正或负)。该值是一个安全整数,因为它小于一天,即 8.64e15 纳秒。

offsetNanoseconds 的设置器为 undefined。你不能直接更改此属性。更改 offset 也会更改此属性。

示例

使用 offsetNanoseconds

js
const dt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:00:00-07:00[America/Los_Angeles]",
);
console.log(dt.offsetNanoseconds); // -25200000000000

const dt2 = Temporal.ZonedDateTime.from(
  "2021-07-01T12:00:00+08:00[Asia/Shanghai]",
);
console.log(dt2.offsetNanoseconds); // 28800000000000

const dt3 = Temporal.ZonedDateTime.from(
  "1900-01-01T00:00:00+00:09:21[Europe/Paris]",
);
console.log(dt3.offsetNanoseconds); // 561000000000

下面是获取一个表示 UTC 中相同挂钟时间的 ZonedDateTime 的一种方法

js
const dt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:00:00-07:00[America/Los_Angeles]",
);
const dtInUTC = dt.add({ nanoseconds: dt.offsetNanoseconds });
console.log(dtInUTC.withTimeZone("UTC").toString()); // "2021-07-01T12:00:00+00:00[UTC]"

下面是获取相同结果的更好方法

js
const dt = Temporal.ZonedDateTime.from(
  "2021-07-01T12:00:00-07:00[America/Los_Angeles]",
);
const dtInUTC = dt.toPlainDateTime().toZonedDateTime("UTC");
console.log(dtInUTC.toString()); // "2021-07-01T12:00:00+00:00[UTC]"

规范

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

浏览器兼容性

另见