Temporal.PlainDateTime.prototype.valueOf()
En esta página
The valueOf() method of {{jsxref("Temporal.PlainDateTime")}} instances throws a {{jsxref("TypeError")}}, which prevents Temporal.PlainDateTime instances from being implicitly converted to primitives when used in arithmetic or comparison operations.
Syntax#
valueOf()
Parameters#
None.
Return value#
None.
Exceptions#
- {{jsxref("TypeError")}}
- : Always thrown.
Description#
Because both primitive conversion and number conversion call valueOf() before toString(), if valueOf() is absent, then an expression like dateTime1 > dateTime2 would implicitly compare them as strings, which may have unexpected results. By throwing a TypeError, Temporal.PlainDateTime instances prevent such implicit conversions. You need to explicitly convert them to strings using {{jsxref("Temporal/PlainDateTime/toString", "Temporal.PlainDateTime.prototype.toString()")}}, or use the {{jsxref("Temporal/PlainDateTime/compare", "Temporal.PlainDateTime.compare()")}} static method to compare them.
Examples#
Arithmetic and comparison operations on Temporal.PlainDateTime#
All arithmetic and comparison operations on Temporal.PlainDateTime instances should use the dedicated methods or convert them to primitives explicitly.
const dt1 = Temporal.PlainDateTime.from("2022-01-01T00:00:00");
const dt2 = Temporal.PlainDateTime.from("2022-07-01T00:00:00");
dt1 > dt2; // TypeError: can't convert PlainDateTime to primitive type
Temporal.PlainDateTime.compare(dt1, dt2); // -1
dt2 - dt1; // TypeError: can't convert PlainDateTime to primitive type
dt2.since(dt1).toString(); // "P181D"
Specifications#
{{Specifications}}
Browser compatibility#
{{Compat}}
See also#
- {{jsxref("Temporal.PlainDateTime")}}
- {{jsxref("Temporal/PlainDateTime/toString", "Temporal.PlainDateTime.prototype.toString()")}}
- {{jsxref("Temporal/PlainDateTime/toJSON", "Temporal.PlainDateTime.prototype.toJSON()")}}
- {{jsxref("Temporal/PlainDateTime/toLocaleString", "Temporal.PlainDateTime.prototype.toLocaleString()")}}