JS Temporal Plain Dates
What is JavaScript Temporal?
The Temporal API is a new standard for date and time management in JavaScript.
The Temporal API is designed to replace the old Date object.
Temporal PlainDate Objects
Plain dates are time-zone-unaware dates and times:
| 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.PlainMonthDay | Month and day only (05-01) |
| Temporal.PlainYearMonth | Year and month only (2026-05) |
Temporal.PlainDate()
The Temporal.PlainDate() method creates a temporal date object with no time zone.
The Temporal.PlainDate() method above:
- Uses a direct constructor call
- Expects numeric arguments: (year, month, day).
- Takes values as-is and validates directly
Temporal.PlainDate.from()
Temporal.PlainDate.from() also lets you to create a date with no time zone:
The Temporal.PlainDate.from()method above:
- Parses values using ISO 8601 parsing rules
- Accept strings, objects, and temporals:
- string: "2026-05-01"
- object: { year:2026, month:5, day:1 }
- 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
Temporal.PlainDate()
The Temporal.PlainDate() method creates a temporal date object with no time zone.
It returns an ISO 8601 calendar date without a time or time zone.
Return example: 2026-05-01.
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.
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().
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.
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.
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]')