Temporal.ZonedDateTime.prototype.valueOf()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Phương thức valueOf() của các thực thể Temporal.ZonedDateTime ném ra TypeError, ngăn các thực thể Temporal.ZonedDateTime bị chuyển đổi ngầm sang kiểu nguyên thủy khi được sử dụng trong các phép toán số học hoặc so sánh.

Cú pháp

js
valueOf()

Tham số

Không có.

Giá trị trả về

Không có.

Ngoại lệ

TypeError

Luôn được ném ra.

Mô tả

Vì cả chuyển đổi nguyên thủychuyển đổi số đều gọi valueOf() trước toString(), nếu valueOf() không có, thì biểu thức như yearMonth1 > yearMonth2 sẽ ngầm so sánh chúng dưới dạng chuỗi, điều này có thể tạo ra kết quả không mong đợi. Bằng cách ném TypeError, các thực thể Temporal.ZonedDateTime ngăn chặn các chuyển đổi ngầm như vậy. Bạn cần chuyển đổi chúng sang số rõ ràng bằng cách sử dụng Temporal.ZonedDateTime.prototype.epochNanoseconds, hoặc sử dụng phương thức tĩnh Temporal.ZonedDateTime.compare() để so sánh chúng.

Ví dụ

Các phép toán số học và so sánh trên Temporal.ZonedDateTime

Tất cả các phép toán số học và so sánh trên các thực thể Temporal.ZonedDateTime nên sử dụng các phương thức chuyên dụng hoặc chuyển đổi chúng sang kiểu nguyên thủy rõ ràng.

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"

Đặc tả

Specification
Temporal
# sec-temporal.zoneddatetime.prototype.valueof

Tương thích trình duyệt

Xem thêm