Temporal.PlainDate

Khả dụng hạn chế

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

Đối tượng Temporal.PlainDate đại diện cho một ngày trên lịch (một ngày không có giờ hoặc múi giờ); ví dụ, một sự kiện trên lịch xảy ra trong suốt cả ngày bất kể múi giờ nào. Về cơ bản, nó được biểu diễn dưới dạng một ngày lịch ISO 8601, với các trường năm, tháng và ngày, cùng với một hệ thống lịch được liên kết.

Mô tả

PlainDate về cơ bản là phần ngày của đối tượng Temporal.PlainDateTime, với thông tin thời gian bị loại bỏ. Vì thông tin ngày và giờ không có nhiều tương tác, tất cả thông tin chung về các thuộc tính ngày được ghi lại ở đây.

Định dạng RFC 9557

Các đối tượng PlainDate có thể được tuần tự hóa và phân tích cú pháp bằng định dạng RFC 9557, một phần mở rộng của định dạng ISO 8601 / RFC 3339. Chuỗi có dạng sau (khoảng trắng chỉ để dễ đọc và không được có trong chuỗi thực tế):

YYYY-MM-DD [u-ca=calendar_id]
YYYY

Một số bốn chữ số, hoặc một số sáu chữ số với dấu + hoặc -.

MM

Một số hai chữ số từ 01 đến 12.

DD

Một số hai chữ số từ 01 đến 31. Các thành phần YYYY, MMDD có thể được phân tách bằng - hoặc không có gì.

[u-ca=calendar_id] Optional

Thay thế calendar_id bằng lịch cần sử dụng. Xem Intl.supportedValuesOf() để biết danh sách các loại lịch thường được hỗ trợ. Mặc định là [u-ca=iso8601]. Có thể có cờ quan trọng bằng cách thêm tiền tố ! vào key: ví dụ, [!u-ca=iso8601]. Cờ này thường thông báo cho các hệ thống khác rằng nó không thể bị bỏ qua nếu họ không hỗ trợ nó. Trình phân tích cú pháp Temporal sẽ ném lỗi nếu các chú thích chứa hai hoặc nhiều chú thích lịch và một trong số chúng là quan trọng. Lưu ý rằng YYYY-MM-DD luôn được hiểu là ngày lịch ISO 8601 và sau đó được chuyển đổi sang lịch được chỉ định.

Là đầu vào, bạn có thể tùy chọn bao gồm giờ, độ lệch và định danh múi giờ, theo cùng định dạng như PlainDateTime, nhưng chúng sẽ bị bỏ qua. Các chú thích khác ở định dạng [key=value] cũng bị bỏ qua và chúng không được có cờ quan trọng.

Khi tuần tự hóa, bạn có thể cấu hình xem có hiển thị ID lịch hay không và có thêm cờ quan trọng cho nó hay không.

Kẹp ngày không hợp lệ

Các phương thức Temporal.PlainDate.from(), Temporal.PlainDate.prototype.with(), Temporal.PlainDate.prototype.add(), Temporal.PlainDate.prototype.subtract() và các phương thức tương đương trong các đối tượng Temporal khác, cho phép xây dựng ngày bằng cách sử dụng các thuộc tính dành riêng cho lịch. Các thành phần ngày có thể nằm ngoài phạm vi. Trong lịch ISO, đây luôn là tràn, chẳng hạn như tháng lớn hơn 12 hoặc ngày lớn hơn số ngày, và việc sửa nó chỉ liên quan đến việc kẹp giá trị về giá trị tối đa được phép. Trong các lịch khác, trường hợp không hợp lệ có thể phức tạp hơn. Khi sử dụng tùy chọn overflow: "constrain", các ngày không hợp lệ được sửa thành ngày hợp lệ theo cách sau:

  • Nếu ngày không tồn tại nhưng tháng tồn tại: chọn ngày gần nhất trong cùng tháng. Nếu có hai ngày cách đều nhau trong tháng đó, chọn ngày sau.
  • Nếu tháng là tháng nhuận không tồn tại trong năm: chọn ngày khác theo quy ước văn hóa của người dùng lịch đó. Thông thường điều này sẽ dẫn đến cùng ngày trong tháng trước hoặc sau khi tháng đó thường rơi vào trong năm nhuận.
  • Nếu tháng không tồn tại trong năm vì lý do khác: chọn ngày gần nhất vẫn còn trong cùng năm. Nếu có hai ngày cách đều nhau trong năm đó, chọn ngày sau.
  • Nếu toàn bộ năm không tồn tại: chọn ngày gần nhất trong một năm khác. Nếu có hai ngày cách đều nhau, chọn ngày sau.

Constructor

Temporal.PlainDate() Thử nghiệm

Tạo một đối tượng Temporal.PlainDate mới bằng cách cung cấp trực tiếp dữ liệu bên dưới.

Phương thức tĩnh

Temporal.PlainDate.compare()

Trả về một số (-1, 0 hoặc 1) cho biết ngày đầu tiên đến trước, bằng hoặc sau ngày thứ hai. Tương đương với việc so sánh các trường năm, tháng và ngày của các ngày ISO 8601 bên dưới.

Temporal.PlainDate.from()

Tạo một đối tượng Temporal.PlainDate mới từ đối tượng Temporal.PlainDate khác, đối tượng có thuộc tính ngày, hoặc chuỗi RFC 9557.

Thuộc tính instance

Các thuộc tính này được định nghĩa trên Temporal.PlainDate.prototype và được chia sẻ bởi tất cả các instance Temporal.PlainDate.

Temporal.PlainDate.prototype.calendarId

Trả về một chuỗi đại diện cho lịch được sử dụng để diễn giải ngày ISO 8601 bên trong.

Temporal.PlainDate.prototype.constructor

Hàm constructor đã tạo đối tượng instance. Đối với các instance Temporal.PlainDate, giá trị ban đầu là constructor Temporal.PlainDate().

Temporal.PlainDate.prototype.day

Trả về một số nguyên dương đại diện cho chỉ mục ngày dựa trên 1 trong tháng của ngày này, là cùng số ngày bạn sẽ thấy trên lịch. Phụ thuộc vào lịch. Thường bắt đầu từ 1 và liên tục, nhưng không phải lúc nào cũng vậy.

Temporal.PlainDate.prototype.dayOfWeek

Trả về một số nguyên dương đại diện cho chỉ mục ngày trong tuần dựa trên 1 của ngày này. Các ngày trong tuần được đánh số tuần tự từ 1 đến daysInWeek, với mỗi số ánh xạ tới tên của nó. Phụ thuộc vào lịch. 1 thường đại diện cho Thứ Hai trong lịch, ngay cả khi các locale sử dụng lịch có thể coi một ngày khác là ngày đầu tiên của tuần (xem Intl.Locale.prototype.getWeekInfo()).

Temporal.PlainDate.prototype.dayOfYear

Trả về một số nguyên dương đại diện cho chỉ mục ngày trong năm dựa trên 1 của ngày này. Ngày đầu tiên của năm này là 1, và ngày cuối cùng là daysInYear. Phụ thuộc vào lịch.

Temporal.PlainDate.prototype.daysInMonth

Trả về một số nguyên dương đại diện cho số ngày trong tháng của ngày này. Phụ thuộc vào lịch.

Temporal.PlainDate.prototype.daysInWeek

Trả về một số nguyên dương đại diện cho số ngày trong tuần của ngày này. Phụ thuộc vào lịch. Đối với lịch ISO 8601, đây luôn là 7, nhưng trong các hệ thống lịch khác, nó có thể khác nhau từ tuần này sang tuần khác.

Temporal.PlainDate.prototype.daysInYear

Trả về một số nguyên dương đại diện cho số ngày trong năm của ngày này. Phụ thuộc vào lịch. Đối với lịch ISO 8601, đây là 365, hoặc 366 trong năm nhuận.

Temporal.PlainDate.prototype.era

Trả về một chuỗi chữ thường dành riêng cho lịch đại diện cho kỷ nguyên của ngày này, hoặc undefined nếu lịch không sử dụng kỷ nguyên (ví dụ, ISO 8601). eraeraYear cùng nhau xác định duy nhất một năm trong lịch, theo cách tương tự như year. Phụ thuộc vào lịch. Đối với Gregorian, đó là "ce" hoặc "bce".

Temporal.PlainDate.prototype.eraYear

Trả về một số nguyên không âm đại diện cho năm của ngày này trong kỷ nguyên, hoặc undefined nếu lịch không sử dụng kỷ nguyên (ví dụ, ISO 8601). Chỉ mục năm thường bắt đầu từ 1 (phổ biến hơn) hoặc 0, và các năm trong một kỷ nguyên có thể giảm theo thời gian (ví dụ, Gregorian BCE). eraeraYear cùng nhau xác định duy nhất một năm trong lịch, theo cách tương tự như year. Phụ thuộc vào lịch.

Temporal.PlainDate.prototype.inLeapYear

Trả về một boolean cho biết ngày này có phải là năm nhuận không. Năm nhuận là năm có nhiều ngày hơn (do ngày nhuận hoặc tháng nhuận) so với năm thông thường. Phụ thuộc vào lịch.

Temporal.PlainDate.prototype.month

Trả về một số nguyên dương đại diện cho chỉ mục tháng dựa trên 1 trong năm của ngày này. Tháng đầu tiên của năm này là 1, và tháng cuối cùng là monthsInYear. Phụ thuộc vào lịch. Lưu ý rằng không giống như Date.prototype.getMonth(), chỉ mục dựa trên 1. Nếu lịch có tháng nhuận, thì tháng có cùng monthCode có thể có các chỉ mục month khác nhau cho các năm khác nhau.

Temporal.PlainDate.prototype.monthCode

Trả về một chuỗi dành riêng cho lịch đại diện cho tháng của ngày này. Phụ thuộc vào lịch. Thường là M cộng với số tháng hai chữ số. Đối với tháng nhuận, đó là mã của tháng trước theo sau bởi L. Nếu tháng nhuận là tháng đầu tiên của năm, mã là M00L.

Temporal.PlainDate.prototype.monthsInYear

Trả về một số nguyên dương đại diện cho số tháng trong năm của ngày này. Phụ thuộc vào lịch. Đối với lịch ISO 8601, đây luôn là 12, nhưng trong các hệ thống lịch khác, nó có thể khác nhau.

Temporal.PlainDate.prototype.weekOfYear

Trả về một số nguyên dương đại diện cho chỉ mục tuần dựa trên 1 trong yearOfWeek của ngày này, hoặc undefined nếu lịch không có hệ thống tuần được xác định rõ ràng. Tuần đầu tiên của năm là 1. Phụ thuộc vào lịch. Lưu ý rằng đối với ISO 8601, một số ngày đầu và cuối năm có thể được gán cho tuần cuối cùng của năm trước hoặc tuần đầu tiên của năm tiếp theo.

Temporal.PlainDate.prototype.year

Trả về một số nguyên đại diện cho số năm của ngày này tương đối so với năm bắt đầu của kỷ nguyên dành riêng cho lịch. Phụ thuộc vào lịch. Thường năm 1 là năm đầu tiên của kỷ nguyên mới nhất hoặc năm ISO 8601 0001. Nếu kỷ nguyên nằm ở giữa năm, năm đó sẽ có cùng giá trị trước và sau ngày bắt đầu của kỷ nguyên.

Temporal.PlainDate.prototype.yearOfWeek

Trả về một số nguyên đại diện cho năm được ghép với weekOfYear của ngày này, hoặc undefined nếu lịch không có hệ thống tuần được xác định rõ ràng. Phụ thuộc vào lịch. Thường đây là năm của ngày, nhưng đối với ISO 8601, một số ngày đầu và cuối năm có thể được gán cho tuần cuối cùng của năm trước hoặc tuần đầu tiên của năm tiếp theo, khiến yearOfWeek chênh lệch 1.

Temporal.PlainDate.prototype[Symbol.toStringTag]

Giá trị ban đầu của thuộc tính [Symbol.toStringTag] là chuỗi "Temporal.PlainDate". Thuộc tính này được sử dụng trong Object.prototype.toString().

Phương thức instance

Temporal.PlainDate.prototype.add()

Trả về một đối tượng Temporal.PlainDate mới đại diện cho ngày này được tiến về phía trước theo một khoảng thời gian nhất định (ở dạng có thể chuyển đổi bởi Temporal.Duration.from()).

Temporal.PlainDate.prototype.equals()

Trả về true nếu ngày này tương đương về giá trị với một ngày khác (ở dạng có thể chuyển đổi bởi Temporal.PlainDate.from()), và false nếu không. Chúng được so sánh cả về giá trị ngày và lịch của chúng.

Temporal.PlainDate.prototype.since()

Trả về một đối tượng Temporal.Duration mới đại diện cho khoảng thời gian từ một ngày khác (ở dạng có thể chuyển đổi bởi Temporal.PlainDate.from()) đến ngày này. Khoảng thời gian là dương nếu ngày kia trước ngày này, và âm nếu sau.

Temporal.PlainDate.prototype.subtract()

Trả về một đối tượng Temporal.PlainDate mới đại diện cho ngày này được lùi về phía sau theo một khoảng thời gian nhất định (ở dạng có thể chuyển đổi bởi Temporal.Duration.from()).

Temporal.PlainDate.prototype.toJSON()

Trả về một chuỗi đại diện cho ngày này theo cùng định dạng RFC 9557 như khi gọi toString(). Dự định được gọi ngầm bởi JSON.stringify().

Temporal.PlainDate.prototype.toLocaleString()

Trả về một chuỗi với biểu diễn nhạy cảm ngôn ngữ của ngày này.

Temporal.PlainDate.prototype.toPlainDateTime()

Trả về một đối tượng Temporal.PlainDateTime mới đại diện cho ngày này và một giờ được cung cấp trong cùng hệ thống lịch.

Temporal.PlainDate.prototype.toPlainMonthDay()

Trả về một đối tượng Temporal.PlainMonthDay mới đại diện cho monthCodeday của ngày này trong cùng hệ thống lịch.

Temporal.PlainDate.prototype.toPlainYearMonth()

Trả về một đối tượng Temporal.PlainYearMonth mới đại diện cho yearmonth của ngày này trong cùng hệ thống lịch.

Temporal.PlainDate.prototype.toString()

Trả về một chuỗi đại diện cho ngày này theo định dạng RFC 9557.

Temporal.PlainDate.prototype.toZonedDateTime()

Trả về một đối tượng Temporal.ZonedDateTime mới đại diện cho ngày này, một giờ được cung cấp và một múi giờ được cung cấp, trong cùng hệ thống lịch.

Temporal.PlainDate.prototype.until()

Trả về một đối tượng Temporal.Duration mới đại diện cho khoảng thời gian từ ngày này đến một ngày khác (ở dạng có thể chuyển đổi bởi Temporal.Instant.from()). Khoảng thời gian là dương nếu ngày kia sau ngày này, và âm nếu trước.

Temporal.PlainDate.prototype.valueOf()

Ném ra TypeError, ngăn các instance Temporal.PlainDate bị chuyển đổi ngầm thành các giá trị nguyên thủy khi được sử dụng trong các phép toán số học hoặc so sánh.

Temporal.PlainDate.prototype.with()

Trả về một đối tượng Temporal.PlainDate mới đại diện cho ngày này với một số trường được thay thế bằng các giá trị mới.

Temporal.PlainDate.prototype.withCalendar()

Trả về một đối tượng Temporal.PlainDate mới đại diện cho ngày này được diễn giải trong hệ thống lịch mới.

Đặc tả

Thông số kỹ thuật
Temporal
# sec-temporal-plaindate-objects

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

Xem thêm