Temporal.ZonedDateTime.prototype.valueOf()

可用性有限

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

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

Temporal.ZonedDateTime 实例的 valueOf() 方法会抛出 TypeError,这会阻止 Temporal.ZonedDateTime 实例在算术或比较操作中被隐式转换为原始值

语法

js
valueOf()

参数

无。

返回值

无。

异常

TypeError

总是抛出。

描述

由于原始值转换数字转换都会在 toString() 之前调用 valueOf(),如果 valueOf() 不存在,那么像 yearMonth1 > yearMonth2 这样的表达式会将它们隐式地作为字符串进行比较,这可能会导致意想不到的结果。通过抛出 TypeErrorTemporal.ZonedDateTime 实例可以防止此类隐式转换。你需要使用 Temporal.ZonedDateTime.prototype.epochNanoseconds 将它们显式转换为数字,或者使用 Temporal.ZonedDateTime.compare() 静态方法来比较它们。

示例

Temporal.ZonedDateTime 上的算术和比较操作

所有针对 Temporal.ZonedDateTime 实例的算术和比较操作都应使用专用方法或显式将其转换为原始值。

js
const zdt1 = Temporal.ZonedDateTime.from(
  "2022-01-01T00:00:00[America/New_York]",
);
const zdt2 = Temporal.ZonedDateTime.from(
  "2022-07-01T00:00:00[America/New_York]",
);
zdt1 > zdt2; // TypeError: can't convert ZonedDateTime to primitive type
Temporal.ZonedDateTime.compare(zdt1, zdt2); // -1

zdt2 - zdt1; // TypeError: can't convert ZonedDateTime to primitive type
zdt2.since(zdt1).toString(); // "PT4343H"

规范

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

浏览器兼容性

另见