Temporal.PlainMonthDay
Temporal.PlainMonthDay 物件表示日曆日期的月份和日期,不包含年份或時區;例如,日曆上每年重複發生並持續一整天的事件。它在根本上表示為 ISO 8601 日曆日期,包含年、月、日欄位,以及關聯的日曆系統。在非 ISO 日曆系統中,年份用於區分月日。
描述
PlainMonthDay 本質上是 Temporal.PlainDate 物件的月日部分,不包含年份。由於月日的含義可能因年份而異(例如,它是否存在,或者第二天的月日是什麼),因此此物件本身不提供太多功能,例如比較、加法或減法。它甚至沒有 month 屬性,因為沒有年份,月份索引沒有意義(例如,在閏月的情況下,兩年中具有相同索引的兩個月份可能具有不同的名稱)。
RFC 9557 格式
PlainMonthDay 物件可以使用 RFC 9557 格式進行序列化和解析,該格式是 ISO 8601 / RFC 3339 格式的擴充套件。字串具有以下形式(空格僅用於可讀性,不應出現在實際字串中)
YYYY-MM-DD [u-ca=calendar_id]
YYYY可選-
四位數,或帶
+或-符號的六位數。對於非 ISO 日曆是必需的,否則是可選的。如果省略,您可以將YYYY-替換為--(這樣字串看起來像--MM-DD或--MMDD),或者完全省略YYYY-部分(這樣字串看起來像MM-DD或MMDD)。請注意,實際儲存的參考年份可能與您提供的年份不同,但表示的月日是相同的。有關更多資訊,請參閱Temporal.PlainMonthDay.from()。 MM-
一個從
01到12的兩位數。 DD-
一個從
01到31的兩位數。YYYY、MM和DD部分可以用-分隔或不用。 [u-ca=calendar_id]可選-
將
calendar_id替換為要使用的日曆。有關常用支援的日曆型別列表,請參閱Intl.supportedValuesOf()。預設為[u-ca=iso8601]。可以透過在鍵前加!來新增關鍵標誌:例如[!u-ca=iso8601]。這個標誌通常告訴其他系統,如果它們不支援它,就不能忽略它。如果註解包含兩個或多個日曆註解且其中一個是關鍵的,Temporal解析器將丟擲錯誤。請注意,YYYY-MM-DD始終被解釋為 ISO 8601 日曆日期,然後轉換為指定的日曆。
作為輸入,你可以選擇性地包含時間、偏移量和時區識別符號,格式與 PlainDateTime 相同,但它們將被忽略。[key=value] 格式的其他註解也將被忽略,且它們不得帶有關鍵標誌。
序列化時,你可以配置是否顯示日曆 ID,以及是否為其新增關鍵標誌。
建構函式
Temporal.PlainMonthDay()實驗性-
透過直接提供底層資料來建立一個新的
Temporal.PlainMonthDay物件。
靜態方法
Temporal.PlainMonthDay.from()實驗性-
從另一個
Temporal.PlainMonthDay物件、具有月份和日期屬性的物件或 RFC 9557 字串建立一個新的Temporal.PlainMonthDay物件。
例項屬性
這些屬性在 Temporal.PlainMonthDay.prototype 上定義,並由所有 Temporal.PlainMonthDay 例項共享。
Temporal.PlainMonthDay.prototype.calendarId實驗性-
返回一個字串,表示用於解釋內部 ISO 8601 日期的日曆。
Temporal.PlainMonthDay.prototype.constructor-
建立例項物件的建構函式。對於
Temporal.PlainMonthDay例項,初始值是Temporal.PlainMonthDay()建構函式。 Temporal.PlainMonthDay.prototype.day實驗性-
返回一個正整數,表示此日期在本月中的基於 1 的日期索引,這與你在日曆上看到的日期數字相同。依賴於日曆。通常從 1 開始並且是連續的,但並非總是如此。
Temporal.PlainMonthDay.prototype.monthCode實驗性-
返回一個日曆特定的字串,表示此日期的月份。依賴於日曆。通常是
M加上一個兩位數的月份編號。對於閏月,它是上一個月的程式碼後跟L。如果閏月是一年中的第一個月,程式碼是M00L。 Temporal.PlainMonthDay.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]屬性的初始值是字串"Temporal.PlainMonthDay"。此屬性在Object.prototype.toString()中使用。
例項方法
Temporal.PlainMonthDay.prototype.equals()實驗性-
如果此月日的值與另一個月日(可以由
Temporal.PlainMonthDay.from()轉換的形式)等效,則返回true,否則返回false。它們透過日期值和日曆進行比較。 Temporal.PlainMonthDay.prototype.toJSON()實驗性-
返回一個字串,以與呼叫
toString()相同的 RFC 9557 格式表示此月日。旨在由JSON.stringify()隱式呼叫。 Temporal.PlainMonthDay.prototype.toLocaleString()實驗性-
返回一個字串,以語言敏感的方式表示此月日。
Temporal.PlainMonthDay.prototype.toPlainDate()實驗性-
返回一個新的
Temporal.PlainDate物件,表示此月日和在同一日曆系統中提供的年份。 Temporal.PlainMonthDay.prototype.toString()實驗性-
返回一個字串,以 RFC 9557 格式表示此月日。
Temporal.PlainMonthDay.prototype.valueOf()實驗性-
丟擲
TypeError,這會阻止Temporal.PlainMonthDay例項在算術或比較操作中 隱式轉換為原始值。 Temporal.PlainMonthDay.prototype.with()實驗性-
返回一個新的
Temporal.PlainMonthDay物件,表示此月日,其中一些欄位被新值替換。
示例
獲取下一個節日的出現
// Chinese New Years are on 1/1 in the Chinese calendar
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()}`,
);
規範
| 規範 |
|---|
| Temporal # sec-temporal-plainmonthday-objects |
瀏覽器相容性
載入中…