Temporal.PlainMonthDay
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Đối tượng Temporal.PlainMonthDay đại diện cho tháng và ngày của một ngày trong lịch, không có năm hay múi giờ; ví dụ, một sự kiện trên lịch lặp lại mỗi năm và diễn ra trong suốt cả ngày. 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. Năm được dùng để phân biệt tháng-ngày trong các hệ thống lịch không phải ISO.
Mô tả
PlainMonthDay về cơ bản là phần tháng-ngày của đối tượng Temporal.PlainDate, không có năm. Vì ý nghĩa của một tháng-ngày có thể thay đổi từ năm này sang năm khác (ví dụ: liệu nó có tồn tại hay không, hoặc tháng-ngày của ngày hôm sau là gì), đối tượng này không cung cấp nhiều chức năng độc lập, chẳng hạn như so sánh, cộng hoặc trừ. Thậm chí nó không có thuộc tính month, vì chỉ số tháng không có ý nghĩa nếu không có năm (ví dụ: hai tháng từ hai năm có cùng chỉ số có thể có tên khác nhau trong trường hợp tháng nhuận).
Định dạng RFC 9557
Các đối tượng PlainMonthDay 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]
YYYYOptional-
Một số bốn chữ số, hoặc một số sáu chữ số với dấu
+hoặc-. Bắt buộc đối với các lịch không phải ISO, và tùy chọn trong các trường hợp khác. Nếu bị bỏ qua, bạn có thể thay thếYYYY-bằng--(để chuỗi trông như--MM-DDhoặc--MMDD), hoặc bỏ phầnYYYY-hoàn toàn (để chuỗi trông nhưMM-DDhoặcMMDD). Lưu ý rằng năm tham chiếu thực sự được lưu trữ có thể khác với năm bạn cung cấp, nhưng tháng-ngày được biểu diễn là như nhau. XemTemporal.PlainMonthDay.from()để biết thêm thông tin. MM-
Một số hai chữ số từ
01đến12. DD-
Một số hai chữ số từ
01đến31. Các thành phầnYYYY,MMvàDDcó thể được phân tách bằng-hoặc không có gì. [u-ca=calendar_id]Optional-
Thay thế
calendar_idbằng lịch cần sử dụng. XemIntl.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ápTemporalsẽ 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ằngYYYY-MM-DDluô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 thông tin thời gian, độ lệch và định danh múi giờ, cùng định dạng với PlainDateTime, nhưng chúng sẽ bị bỏ qua. Các chú thích khác theo đị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.
Constructor
Temporal.PlainMonthDay()Experimental-
Tạo một đối tượng
Temporal.PlainMonthDaymớ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.PlainMonthDay.from()-
Tạo một đối tượng
Temporal.PlainMonthDaymới từ một đối tượngTemporal.PlainMonthDaykhác, một đối tượng có thuộc tính tháng và ngày, hoặc một chuỗi RFC 9557.
Thuộc tính instance
Các thuộc tính này được định nghĩa trên Temporal.PlainMonthDay.prototype và được chia sẻ bởi tất cả các instance Temporal.PlainMonthDay.
Temporal.PlainMonthDay.prototype.calendarId-
Trả về một chuỗi đại diện cho lịch được dùng để diễn giải ngày ISO 8601 bên trong.
Temporal.PlainMonthDay.prototype.constructor-
Hàm constructor đã tạo ra đối tượng instance. Đối với các instance
Temporal.PlainMonthDay, giá trị ban đầu là constructorTemporal.PlainMonthDay(). Temporal.PlainMonthDay.prototype.day-
Trả về một số nguyên dương đại diện cho chỉ số ngày dựa trên 1 trong tháng của ngày này, là cùng số ngày bạn 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 luôn luôn.
Temporal.PlainMonthDay.prototype.monthCode-
Trả về một chuỗi đặc trư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à
Mcộ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 làL. Nếu tháng nhuận là tháng đầu tiên của năm, mã làM00L. Temporal.PlainMonthDay.prototype[Symbol.toStringTag]-
Giá trị ban đầu của thuộc tính
[Symbol.toStringTag]là chuỗi"Temporal.PlainMonthDay". Thuộc tính này được sử dụng trongObject.prototype.toString().
Phương thức instance
Temporal.PlainMonthDay.prototype.equals()-
Trả về
truenếu tháng-ngày này tương đương về giá trị với một tháng-ngày khác (ở dạng có thể chuyển đổi bởiTemporal.PlainMonthDay.from()), vàfalsenếu không. Chúng được so sánh cả về giá trị ngày và lịch của chúng. Temporal.PlainMonthDay.prototype.toJSON()-
Trả về một chuỗi đại diện cho tháng-ngày này theo cùng định dạng RFC 9557 như khi gọi
toString(). Được thiết kế để được gọi ngầm định bởiJSON.stringify(). Temporal.PlainMonthDay.prototype.toLocaleString()-
Trả về một chuỗi với biểu diễn tháng-ngày này theo ngôn ngữ cụ thể.
Temporal.PlainMonthDay.prototype.toPlainDate()-
Trả về một đối tượng
Temporal.PlainDatemới đại diện cho tháng-ngày này và một năm được cung cấp trong cùng hệ thống lịch. Temporal.PlainMonthDay.prototype.toString()-
Trả về một chuỗi đại diện cho tháng-ngày này theo định dạng RFC 9557.
Temporal.PlainMonthDay.prototype.valueOf()-
Ném một
TypeError, ngăn các instanceTemporal.PlainMonthDaybị chuyển đổi ngầm định sang kiểu nguyên thủy khi được dùng trong các phép tính số học hoặc so sánh. Temporal.PlainMonthDay.prototype.with()-
Trả về một đối tượng
Temporal.PlainMonthDaymới đại diện cho tháng-ngày này với một số trường được thay thế bằng các giá trị mới.
Ví dụ
>Lấy lần xuất hiện tiếp theo của một lễ hội
// Tết Nguyên Đán là ngày 1/1 trong lịch Trung Quốc
const chineseNewYear = Temporal.PlainMonthDay.from({
monthCode: "M01",
day: 1,
calendar: "chinese",
});
const currentYear = Temporal.Now.plainDateISO().withCalendar("chinese").year;
let nextCNY = chineseNewYear.toPlainDate({ year: currentYear });
if (Temporal.PlainDate.compare(nextCNY, Temporal.Now.plainDateISO()) <= 0) {
nextCNY = nextCNY.add({ years: 1 });
}
console.log(
`The next Chinese New Year is on ${nextCNY.withCalendar("iso8601").toLocaleString()}`,
);
Đặc tả kỹ thuật
| Specification |
|---|
| Temporal> # sec-temporal-plainmonthday-objects> |