JavaScript PlainMonthDay
The Temporal.PlainMonthDay Object
The Temporal.PlainMonthDay object is a month and day object.
It represents the month and day of an ISO 8601 calendar, without a year or time.
Example: 05-17.
How to Create a PlainMonthDay Object
An PlainMonthDayTime object can be created in several different ways:
| From | Code |
|---|---|
| Parameters | new Temporal.PlainMonthDay(param) |
| Object | Temporal.PlainMonthDay.from(object) |
| ISO/RFC 9557 | Temporal.PlainMonthDay.from(RFC9557) |
Create a PlainMonthDay with new
Example
// Create a new PlainMonthDay object
const date = new Temporal.PlainMonthDay(5, 17);
Try it Yourself »
PlainMonthDay from(object)
Example
// Create a new PlainMonthDay object
const date = Temporal.PlainMonthDay.from({month:5, day:17});
Try it Yourself »
PlainMonthDay from(RFC 9557)
Examples
// Create a new PlainMonthDay object
const date = Temporal.PlainMonthDay.from("05-17");
Try it Yourself »
// Create a new PlainMonthDay object
const date = Temporal.PlainMonthDay.from("2026-05-17");
Try it Yourself »
Note that year is ignored if used as input
PlainMonthDay equals()
Example
// Create two PlainMonthDay objects
const date1 = Temporal.PlainMonthDay.from("05-17");
const date2 = Temporal.PlainMonthDay.from("07-19");
// Compare
let result = date1.equals(date2);
Try it Yourself »
Most (*) temporal objects have their own equals() method:
- instant.equals(instant)
- plaindate.equals(plaindate)
- plaintime.equals(plaintime)
- plainyearmonth.equals(plainyearmonth)
- plainmonthday.equals(plainmonthday)
- plaindateTime.equals(plaindatetime)
- zoneddateTime.equals(zoneddtatime)
(*) Duration has not.
Learn More:
The with() Method
The with() method returns a new PlainMonthDay object with specified field(s) replaced.
Example
// Create a PlainMonthDay object
const date = Temporal.PlainMonthDay.from("05-17");
// Replace month
const newDate = date.with({ month:12 });
Try it Yourself »
All PlainMonthDay Methods
| Constructing | Description |
|---|---|
| from() | Creates a PlainMonthDay object from an object or a string |
| new (constructor) | Creates a PlainMonthDay object from integer parameters |
| Comparing | |
| equals() | Returns true if two PlainMonthDay objects are identical |
| Converting | |
| toPlainDate() | Returns a new PlainDate object |
| with() | Returns a new PlainMonthDay with specified fields modified |
| Formatting | |
| toJSON() | Returns an RFC 9557 format string for JSON serialization |
| toLocaleString() | Returns a language-sensitive representation of the date |
| toString() | Returns an RFC 9557 format string representation of the date |
| valueOf() | TypeError (temporals cannot be converted to primitives) |
All PlainMonthDay Properties
| Property | Description |
|---|---|
| calendarID | Calendar system identifier ("iso8601") |
| day | The day as an integer (1-31) |
| monthCode | A calendar-specific string code for the month ("M01") |
Note
The Temporal.PlainMonthDay object does not have a month property.
This is because non-ISO calendars (Hebrew, Chinese) can have leap months. The same named month may have a different numerical index (month) each year, making the month integer ambiguous without a year.
Display all PlainMonthDay Properties
const date = new Temporal.PlainMonthDay(5, 17);
Try it Yourself »