Temporal.ZonedDateTime.prototype.getTimeZoneTransition()

可用性有限

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

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

Temporal.ZonedDateTime 实例的 getTimeZoneTransition() 方法返回一个 Temporal.ZonedDateTime 对象,该对象表示在此即时之后或之前,时区 UTC 偏移量发生变化的最接近的即时(返回的即时是变化后的第一个即时),如果没有这样的变化,则返回 null。这对于查找时区的偏移量规则(例如夏令时模式)非常有用。

请注意,有关未来的即时可能不可靠,例如由于时区定义的变化。

语法

js
getTimeZoneTransition(direction)
getTimeZoneTransition(options)

参数

direction

一个字符串,表示 direction 选项。这是一个方便的重载,因此 getTimeZoneTransition(direction) 等同于 getTimeZoneTransition({ direction }),其中 direction 是一个字符串。

options

包含以下属性的对象

direction

是搜索当前即时之前还是之后。必须是 "next""previous" 之一。

返回值

一个 Temporal.ZonedDateTime 对象,其即时 t 满足:

  • t 时的时区偏移量与 t 前一纳秒的偏移量不同。
  • 如果 direction"previous",则 t < this.epochNanoseconds;如果 direction"next",则 t > this.epochNanoseconds
  • this.epochNanosecondst 之间的所有即时(不包括 this.epochNanosecondst),偏移量是恒定的。

如果没有这样的过渡,则返回 null

示例

查找下一个时区过渡

js
const dt = Temporal.ZonedDateTime.from("2024-01-01T00-05:00[America/New_York]");
const transition = dt.getTimeZoneTransition("next");
console.log(transition.toString()); // "2024-03-10T03:00:00-04:00[America/New_York]"

const transition2 = transition.getTimeZoneTransition("next");
console.log(transition2.toString()); // "2024-11-03T01:00:00-05:00[America/New_York]"

const transition3 = dt.getTimeZoneTransition("previous");
console.log(transition3.toString()); // "2023-11-05T01:00:00-05:00[America/New_York]"

const dt2 = Temporal.ZonedDateTime.from("2024-01-01T00Z[UTC]");
console.log(dt2.getTimeZoneTransition("next")); // null

规范

规范
Temporal
# sec-temporal.zoneddatetime.prototype.gettimezonetransition

浏览器兼容性

另见