JavaScript Temporal Dates
JavaScript Temporal Date Reference
Revised March 2026
| Object | Description |
|---|---|
| Temporal.Now | Current time (UTC timestamp) |
| Temporal.Instant | Exact moment in time (UTC timestamp) |
| Temporal.PlainDate | Plain date only (year, month, day) |
| Temporal.PlainTime | Plain time without a time zone |
| Temporal.PlainDateTime | Date and time without a time zone |
| Temporal.ZonedDateTime | Date and time with a time zone |
| Temporal.Duration | Length of time (days, hours, minutes) |
New to JavaScript Temporal Dates?
The Temporal.PlainDate Object
The Temporal.PlainDate object represents a calendar date (year, month, and day)
without a specific time zone, typically in ISO 8601 format ("2026-05-01").
It is used for dates that remain the same regardless of time zone, such as birthdays or holidays.
Temporal.PlainDate Methods
| Method | Description |
|---|---|
| from() | Returns a new PlainDate object from another object or a string |
| toPlainDateTime() | Returns a new PlainDateTime object |
| toPlainMonthDay() | Returns a new PlainMonthDay object |
| toPlainYearMonth() | Returns a new PlainYearMonth object |
| toPlainMonthDay() | Returns a new PlainMonthDay object |
| toZonedDateTime() | Returns a new ZonedDatetime object |
| Arithmetic | |
| add() | Returns a new PlainDate with a duration added |
| subtract() | Returns a new PlainDate with a duration subtracted |
| with() | Returns a new PlainDate with specified fields modified |
| withCalendar() | Returns a new PlainDate with a different calendar system |
| Comparison | |
| compare() | Returns -1, 0, or 1 from comparing two dates |
| equals() | Returns true if two PlainDate objects are identical |
| since() | Returns the difference since another date |
| until() | Returns the difference until another date |
| Formatting | |
| toString() | Returns an ISO 8601 string representation |
| toJSON() | Returns an ISO 8601 string for JSON serialization |
| toLocaleString() | Returns a language-sensitive representation of the date |
| valueOf() | Throws a TypeError (prevents temporals from being converted to primitives) |
Browser Support
Temporal is a major update to the JavaScript standard (TC39).
It is currently fully supported in Chrome, Edge, and Firefox, and is expected to reach full availability across browsers throughout 2026.
| Chrome 144 |
Edge 144 |
Firefox 139 |
Safari |
Opera |
| Jan 2026 | Jan 2026 | May 2025 | 🚫 | 🚫 |
Opera Support
Opera support will probably appear 1-3 browser cycles after Chromium, which often means a few months later.
Safari Support
As of March 2026, Safari has not yet announced a confirmed release date for stable support of the JavaScript Temporal API.
However, the implementation is actively in development and can be tested today in Safari Technology Preview by enabling the --use-temporal runtime flag.
Polyfill
Until Opera and Safari supports Temporal natively, use the official polyfill.
This Polyfill allows Temporal code to run in all browsers today:
Example
<script
src="https://cdn.jsdelivr.net/npm/@js-temporal/polyfill/dist/index.umd.js">
</script>
<script>
// Now you can use Temporal
const today = Temporal.Now.plainDateISO();
</script>