Temporal.PlainMonthDay
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Temporal.PlainMonthDay オブジェクトは、年やタイムゾーンを含まない、暦日の月と日を表します。例えば、毎年繰り返し現れ、1 日を通して行われる暦上のイベントなどが該当します。これは基本的に、年、月、日のフィールドと、関連付けられた暦体系を持つ ISO 8601 形式の暦日として表現されます。ISO 以外の暦体系では、月と日を明確に区別するために年が使用されます。
解説
PlainMonthDayは、本質的にTemporal.PlainDateTimeオブジェクトの月と日の部分であり、年を除いたものです。月と日の意味は年によって変わる可能性があるため(例えば、その日が存在するかどうか、あるいは翌日の月と日が何であるかなど)、このオブジェクト単体では、比較や加算、減算といった機能はほとんど提供されません。month プロパティさえも持っていません。これは、年がなければ月インデックスに意味がないためです(例えば、閏月がある場合、2 つの年の同じインデックスを持つ 2 つの月が異なる名称を持つ可能性があります)。
RFC 9557 形式
PlainMonthDay オブジェクトは、RFC 9557 形式(ISO 8601 / RFC 3339 形式を拡張したもの)を使用してシリアライズおよび構文解析することができます。文字列は次の形式をとります(空白は可読性のためのものであり、実際の文字列には含めないでください)。
YYYY-MM-DD [u-ca=calendar_id]
YYYY省略可-
4 桁の数値、または
+または-の符号をつけた 6 桁の数値です。ISO 以外の暦では必須であり、それ以外の場合はオプションです。省略する場合は、YYYY-を--に置き換える(文字列が--MM-DDまたは--MMDDになる)、あるいはYYYY-の部分を完全に省略する(文字列がMM-DDまたはMMDDになる)のいずれかを選択できます。実際に格納される基準年は、指定された年とは異なる場合がありますが、表される月と日は同じであることにご注意ください。情報については、Temporal.PlainMonthDay.from()を参照してください。 MM-
01~12の 2 桁の数値です。 DD-
01~31の 2 桁の数値で、YYYY、MM、DDの各成分は-で区切ることも、区切らないこともできます。 [u-ca=calendar_id]省略可-
calendar_idを、使用する暦に置き換えます。一般的に対応している暦の種類のリストについては、Intl.supportedValuesOf()を参照してください。デフォルトは[u-ca=iso8601]です。キーの先頭に!をつけて、[!u-ca=iso8601]のように重要フラグを持たせることができます。このフラグは、一般的に、他のシステムに対して、対応していない場合でも無視してはならないことを指示します。Temporalパーサーでは、注釈に 2 つ以上のカレンダー注釈が含まれており、そのうちの 1 つが重要フラグ付きの場合、エラーが発生します。なお、YYYY-MM-DDは常に ISO 8601 暦の日付として解釈され、その後、指定された暦に変換される点にご注意ください。
入力として、オプションでタイムゾーン識別子、オフセット、時刻を PlainDateTime と同じ書式で含めることができますが、これらは無視されます。それ以外の [key=value] 形式の注釈も同時に無視されます。また、これらの注釈には重要フラグを指定してはいけません。
シリアライズを行う際、カレンダー ID を表示させるかどうか、重要フラグを追加するかどうかを設定できます。
コンストラクター
Temporal.PlainMonthDay()Experimental-
基盤となるデータを直接指定して、新しい
Temporal.PlainMonthDayオブジェクトを作成します。
静的メソッド
Temporal.PlainMonthDay.from()-
新しい
Temporal.PlainMonthDayオブジェクトを、別のTemporal.PlainMonthDayオブジェクト、月と日のプロパティを持つオブジェクト、RFC 9557 形式の文字列からのいずれかから作成します。
インスタンスプロパティ
これらのプロパティは 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に 2 桁の月番号が加わります。閏月の場合、前回月のコードに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.PlainDateTimeオブジェクトを返します。このオブジェクトは、この月日と指定された時刻を、同じ暦体系で表します。 Temporal.PlainMonthDay.prototype.toString()-
指定されたタイムゾーンを使用して、この月日を表す RFC 9557 形式の文字列を返します。
Temporal.PlainMonthDay.prototype.valueOf()-
TypeErrorが発生します。これにより、算術演算や比較演算で使用される際、Temporal.PlainMonthDayのインスタンスがプリミティブ型へ暗黙的に変換されることが防止されます。 Temporal.PlainMonthDay.prototype.with()-
新しい
Temporal.PlainMonthDayオブジェクトを作成し、この月日の一部のフィールドは新しい値に置き換えたものを表したものを設定して返します。
例
>次回の祭りの日程を取得
// 中国の春節は、中国暦の 1 月 1 日
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(
`次の中国の春節は ${nextCNY.withCalendar("iso8601").toLocaleString()} です`,
);
仕様書
| Specification |
|---|
| Temporal> # sec-temporal-plainmonthday-objects> |