Temporal.ZonedDateTime.prototype.withTimeZone()

可用性有限

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

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

Temporal.ZonedDateTime 实例的 withTimeZone() 方法返回一个新的 Temporal.ZonedDateTime 对象,该对象表示与此日期时间相同的时刻,但使用新的时区。由于所有 Temporal 对象都被设计为不可变,此方法本质上作为日期时间 timeZoneId 属性的设置器。

要替换日期时间组件属性,请使用 with() 方法。要替换其日历,请使用 withCalendar() 方法。

语法

js
withTimeZone(timeZone)

参数

timeZone

一个字符串或一个 Temporal.ZonedDateTime 实例,表示要使用的时区。如果是 Temporal.ZonedDateTime 实例,则使用其时区。如果是一个字符串,它可以是命名时区标识符、偏移时区标识符,或者包含时区标识符或偏移的日期时间字符串(有关更多信息,请参阅时区和偏移)。

返回值

一个新的 Temporal.ZonedDateTime 对象,表示与此日期时间相同的时刻,但使用新的时区。

异常

TypeError

如果 timeZone 不是字符串或 Temporal.ZonedDateTime 实例,则抛出此错误。

RangeError

如果时区名称无效,则抛出此错误。

示例

使用 withTimeZone()

js
const meetingTime = Temporal.ZonedDateTime.from(
  "2021-08-01T12:00[America/New_York]",
);
const meetingTimeInParis = meetingTime.withTimeZone("Europe/Paris");
console.log(meetingTimeInParis.toString()); // 2021-08-01T18:00:00+02:00[Europe/Paris]

在保持相同挂钟时间的同时替换时区

在您希望保持挂钟时间不变但更改时区(并导致不同的时刻)的罕见情况下,请先将其转换为 Temporal.PlainDateTime

js
const meetingTime = Temporal.ZonedDateTime.from(
  "2021-08-01T12:00[America/New_York]",
);
const meetingTimeInParis = meetingTime
  .toPlainDateTime()
  .toZonedDateTime("Europe/Paris");
console.log(meetingTimeInParis.toString()); // 2021-08-01T12:00:00+02:00[Europe/Paris]

规范

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

浏览器兼容性

另见