JS Temporal Plain Dates
What is a Plain Date?
A Temporal.PlainDate Object represents a calendar date without a specific time zone, typically in ISO 8601 format ("2026-05-01").
Plain Dates are used for dates that remain the same regardless of time zone, such as birthdays or holidays.
| Temporal.PlainDate | Calendar date only (2026-05-21) |
| Temporal.PlainTime | Time of day only (14:30:00) |
| Temporal.PlainDateTime | Full date and time (2026-01-24 14:30:00) |
| Temporal.PlainYearMonth | Year and month only (2026-05) |
| Temporal.PlainMonthDay | Month and day only (05-01) |
The Temporal.PlainDate() Method
The Temporal.PlainDate() method creates a temporal PlainDate object with no time zone.
It returns a calendar date without a time or time zone like 2026-05-01.
The Temporal.PlainDate() method above:
- Uses a constructor call
- Expects numeric arguments (year, month, day).
The Temporal.PlainDate.from() Method
Temporal.PlainDate.from() also creates a PlainDate object with no time zone:
The Temporal.PlainDate.from()method above:
- Parses the input using ISO 8601 parsing rules
- Accepts strings: "2026-05-01"
- Accepts objects: { year:2026, month:5, day:1 }
- Accepts temporal: PlainDate
Note
Parsing means validation pluss automatic conversion.
When to Use Which?
Use new Temporal.PlainDate() when:
- You have trusted numeric values
- You want speed
- You want predictable construction
- You are doing date math
Use Temporal.PlainDate.from() when:
- You are handling user input (strings)
- You are handling external data (JSON)
- You want maximum flexibility
The Temporal.PlainDate Object
The Temporal.PlainDate object has 16 properties of calendar date information.
These include calendar identification, day/month/year details, era information and other calendar metrics:
| Property | Description |
| calendarID | Calendar system identifier ("iso8601") |
| day | The day as an integer (1-31) |
| dayOfWeek | The day of the week as an integer (1 = Monday) |
| dayOfYear | The ordinal day of the year |
| daysInMonth | The total number of days in that month |
| daysInWeek | The total number of days in that week |
| daysInYear | The total number of days in that year |
| era | The era name of the calendar, if applicable |
| eraYear | The year within the era, if applicable |
| inLeapYear | A boolean indicating if the year is a leap year |
| month | The month as an integer (1-12) |
| monthCode | A string code for the month ("M01") |
| monthsInYear | The total number of months in that year |
| weekOfYear | The week number within the year |
| year | The year as an integer |
| yearOfWeek | The year that the week belongs to |
Note
A PlainDate object is essentially the date part of a Temporal.PlainDateTime object, with the time information removed.
Temporal.PlainTime()
The Temporal PlainTime() method creates a time object with no date.
It returns an ISO 8601 wall-clock time without a date or time zone.
Return example: 10:30:00.
The Temporal.PlainTime Object
The Temporal.PlainTime object has 6 properties of time information.
| Property | Description |
| hour | The hour as an integer (0-23 |
| microsecond | The microsecond as an integer (0-999) |
| millisecond | The millisecond as an integer (0-999) |
| minute | The minute as an integer (0-59) |
| nanosecond | The nanosecond as an integer (0-999) |
| second | The second as an integer (0-59) |
Temporal.PlainDateTime()
The PlainDateTime() method creates a temporal date and time object.
It returns a calendar date and a wall-clock time with no time zone.
Return example: 2026-05-01T10:00:00.
Note
A PlainDateTime is essentially the combination of a Temporal.PlainDate() and a Temporal.PlainTime().
The Temporal.PlainDateTime Object
The Temporal.PlainDateTime has 22 properties of calendar date information.
These include calendar id, day/month/year/time, era information and various calendar metrics:
| Property | Description |
| calendarID | Calendar system identifier ("iso8601") |
| day | The day as an integer (1-31) |
| dayOfWeek | The day of the week as an integer (1 = Monday) |
| dayOfYear | The ordinal day of the year |
| daysInMonth | The total number of days in that month |
| daysInWeek | The total number of days in that week |
| daysInYear | The total number of days in that year |
| era | The era name of the calendar, if applicable ("gregory") |
| eraYear | The year within the era, if applicable |
| hour | The hour as an integer (0-23 |
| inLeapYear | A boolean indicating if the date falls in a leap year |
| microsecond | The microsecond as an integer (0-999) |
| millisecond | The millisecond as an integer (0-999) |
| minute | The minute as an integer (0-59) |
| month | The month as an integer (1-12) |
| monthCode | A calendar-specific string code for the month ("M01") |
| monthsInYear | The total number of months in that year |
| nanosecond | The nanosecond as an integer (0-999) |
| second | The second as an integer (0-59) |
| weekOfYear | The week number within the year |
| year | The year as an integer |
| yearOfWeek | The year that the week belongs to |
Temporal.PlainYearMonth()
The Temporal.PlainYearMonth() method creates a temporal time and year object.
It returns the year and month of an ISO 8601 calendar date, without a day or a time zone.
Return example: 2026-05.
The Temporal.PlainYearMonth Object
The Temporal.PlainYearMonth has 10 properties of calendar date information.
| Property | Description |
| calendarID | Calendar system identifier ("iso8601") |
| daysInMonth | The total number of days in that month |
| daysInYear | The total number of days in that year |
| era | The era name of the calendar, if applicable ("gregory") |
| eraYear | The year within the era, if applicable |
| inLeapYear | A boolean indicating if the date falls in a leap year |
| month | The month as an integer (1-12) |
| monthCode | A calendar-specific string code for the month ("M01") |
| monthsInYear | The total number of months in that year |
| year | The year as an integer |
Temporal.PlainMonthDay()
The Temporal.PlainMonthDay() method create a temporal month and day object.
It returns the month and day of an ISO 8601 calendar date, without a year or a time zone.
Return example: 05-01.
The Temporal.PlainMonthDay Object
The Temporal.PlainMonthDay has 3 properties of calendar date information.
| 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.
Temporal Calendars
new Temporal.PlainDate(...) defaults to ISO 8601.
If you want a specific calendar, you CAN add a calendrer parameter:
Example
new Temporal.PlainDate(2026, 5, 1, 'iso8601')
.from(...) defaults to ISO 8601.
You CANNOT add a calendar parameter, but if the input string includes a calendar, it is used:
Example
Temporal.PlainDate.from('2026-05-01[u-ca=iso8601]')