Temporal.PlainDate.prototype.toZonedDateTime()

可用性有限

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

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

toZonedDateTime() 方法用于 Temporal.PlainDate 实例,它会返回一个新的 Temporal.ZonedDateTime 对象,该对象表示此日期、指定的时间和指定的时间区域,并使用相同的日历系统。

语法

js
toZonedDateTime(timeZone)
toZonedDateTime(info)

参数

timeZone

可以是代表 timeZone 选项的字符串或 Temporal.ZonedDateTime 实例。这是一个方便的重载,因此 toZonedDateTime(timeZone) 等同于 toZonedDateTime({ timeZone }),其中 timeZone 是字符串或 Temporal.ZonedDateTime。当第一个参数不是对象,或者对象的 timeZone 属性是 undefined 时(因为 ZonedDateTime 实例有一个 timeZoneId 属性而不是 timeZone),会选择此重载。

info

一个包含以下部分或全部属性的对象(按检索和验证的顺序):

plainTime 可选

可以是代表结果 ZonedDateTime 时间部分的字符串、对象或 Temporal.PlainTime 实例。它使用与 Temporal.PlainTime.from() 相同的算法转换为 Temporal.PlainTime 对象。默认为此日历日期在此时间区域的第一个有效时间,通常是 "00:00:00",但如果例如夏令时跳过了午夜,则可能不同。

timeZone

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

返回值

一个新的 Temporal.ZonedDateTime 对象,表示此日期、plainTimetimeZone 指定的日期和时间,并在此日期的日历系统中进行解释。

模糊性 的情况下,始终使用 compatible 行为:如果时间落入了一个间隙,我们会按间隙长度向前移动;如果时间落入了一个模糊区域,我们会选择两者中较早的那个。这意味着结果 ZonedDateTime 的日期或时间可能与输入不同。

异常

TypeError

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

RangeError

如果 timeZone 是一个无效时区标识符的字符串,则会抛出此错误。

示例

使用 toZonedDateTime()

js
const summer = Temporal.PlainDate.from("2021-07-01");
// Just time zone
const summerTime = summer.toZonedDateTime("America/New_York");
console.log(summerTime.toString()); // 2021-07-01T00:00:00-04:00[America/New_York]

const winter = Temporal.PlainDate.from("2021-01-01");
// Time zone and time
const winterTime = winter.toZonedDateTime({
  plainTime: "12:34:56",
  timeZone: "America/New_York",
});
console.log(winterTime.toString()); // 2021-01-01T12:34:56-05:00[America/New_York]

const spring = Temporal.PlainDate.from("2021-03-01");
// Time zone as object and time as object
const springTime = spring.toZonedDateTime({
  plainTime: summerTime.toPlainTime(),
  timeZone: winterTime,
});
console.log(springTime.toString()); // 2021-03-01T00:00:00-05:00[America/New_York]

规范

规范
Temporal
# sec-temporal.plaindate.prototype.tozoneddatetime

浏览器兼容性

另见