Temporal.ZonedDateTime.prototype.toJSON()

可用性有限

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

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

Temporal.ZonedDateTime 实例的 toJSON() 方法返回一个字符串,该字符串表示此日期时间,其格式与调用 toString() 方法时使用的 RFC 9557 格式相同。它旨在由 JSON.stringify() 隐式调用。

语法

js
toJSON()

参数

无。

返回值

一个字符串,表示给定日期时间,采用 RFC 9557 格式,如果日历不是 "iso8601",则包含日历注释;偏移量和时区注释始终包含。

描述

Temporal.ZonedDateTime 对象被转换为字符串时,toJSON() 方法会被 JSON.stringify() 自动调用。此方法通常旨在默认情况下,在 JSON 序列化过程中有效地序列化 Temporal.ZonedDateTime 对象,然后可以使用 Temporal.ZonedDateTime.from() 函数作为 JSON.parse() 的复原器进行反序列化。

示例

使用 toJSON()

js
const zdt = Temporal.ZonedDateTime.from({
  year: 2021,
  month: 8,
  day: 1,
  timeZone: "America/New_York",
});
const zdtStr = zdt.toJSON(); // '2021-08-01T00:00:00-04:00[America/New_York]'
const zdt2 = Temporal.ZonedDateTime.from(zdtStr);

JSON 序列化和解析

此示例展示了 Temporal.ZonedDateTime 如何在不额外费力的情况下序列化为 JSON,以及如何将其解析回来。

js
const zdt = Temporal.ZonedDateTime.from({
  year: 2021,
  month: 8,
  day: 1,
  timeZone: "America/New_York",
});
const jsonStr = JSON.stringify({ meeting: zdt }); // '{"meeting":"2021-08-01T00:00:00-04:00[America/New_York]"}'
const obj = JSON.parse(jsonStr, (key, value) => {
  if (key === "meeting") {
    return Temporal.ZonedDateTime.from(value);
  }
  return value;
});

规范

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

浏览器兼容性

另见