JavaScript Temporal Instant
The Temporal.Instant Object
The Temporal.Instant object represents an exact moment in UTC time.
It has no time zone or calendar.
It only stores nanoseconds since January 1, 1970 00:00:00. (the Unix epoch).
It replaces Date timestamps and provides clearer and safer date comparisons.
Learn how to:
- Create Instants
- Compare Instants
- Convert from timestamps
- HowTo replace Date.now().
What is Instant?
In JavaScript, the term "instant" refers to an exact moment in universal time (UTC).
This can be achieved using the standard built-in Date object.
Modern applications will use the newer Temporal.Instant object.
Creating an Instant
| From | Code |
|---|---|
| Constructor | new Temporal.Instant() |
| String | Temporal.Instant.from('1969-07-20T20:17:00Z') |
| Epoch millisec | Temporal.Instant.fromEpochMilliseconds() |
| Epoch nanosec | Temporal.Instant.fromEpochNanoseconds() |
| Current time | Temporal.Now.instant() |
Create an Instant from new
You can create an Instant using the new Temporal.Instant() constructor.
The n at the end means BigInt.
Create an Instant from a String
You can create an Instant from an RFC 9557 string.
The Z at the end means UTC time.
Create an Instant from Epoch Milliseconds
You can create an Instant from a Unix timestamp (milliseconds since 1970-01-01).
This is similar to how JavaScript Date works internally.
Create an Instant from Epoch Nanoseconds
You can create an Instant from a Unix timestamp (nanoseconds since 1970-01-01).
Example
const instant = Temporal.Instant.fromEpochNanoseconds(1779028200000000000n);
Try it Yourself »
Create an Instant from Current Time
JavaScript Temporal.Instant does not have any method for creating an instant from current time.
You must use a Temporal.Now method instead.
The Temporal.Now.instant() method returns an Temporal.Instant object with the exact current time.
HowTo Replace Date.now()
With Date, you use Date.now() to get the current
timestamp.
The Date.now() method returns the timestamp value in
milliseconds:
With Temporal, you use Temporal.Now.instant():
Example
const instant = Temporal.Now.instant();
let timestamp = instant.epochMilliseconds;
Try it Yourself »
The property epochMilliseconds returns the timestamp value in
milliseconds.
Example
const instant = Temporal.Now.instant();
let timestamp = instant.epochNanoseconds;
Try it Yourself »
The property epochNanoseconds returns the timestamp value in
nanoseconds.
Note
Nanosecond precision is 1,000,000 (one million) times higher than millisecond precision.
Convert Instant to Date and Time
A Temporal.Instant does not include time zone information.
You must convert it to a ZonedDateTime to display local time.
This converts the UTC moment to a specific time zone:
Example
const instant = Temporal.Instant.from("2026-05-17T14:30:00Z");
const zoned = instant.toZonedDateTimeISO("Europe/Oslo");
Try it Yourself »
When to Use Instant
When storing timestamps in a database.
When comparing exact moments in time.
When working with logs or events.
When you need a UTC-based value.
Note
Use Instant when you care about an exact moment, not how it looks in another time zone.
Temporal.Instant Methods
| Constructing | |
|---|---|
| new | Creates a new Temporal.Instant object |
| from() | Creates a new Instant object from another instant or a string |
| fromEpochMilliseconds() | Returns a new Instant object from a number of milliseconds |
| fromEpochNanoseconds() | Returns a new Instant object from a number of nanoseconds |
| Arithmetic | |
| add() | Returns a new Instant with a duration added |
| round() | Returns a new Instant with this instant rounded |
| subtract() | Returns a new Instant with a duration subtracted |
| Comparing | |
| compare() | Returns -1, 0, or 1 from comparing two instants |
| equals() | Returns true if two instants are identical |
| since() | Returns the duration since another date |
| until() | Returns the duration until another date |
| Converting | |
| toZonedDateTimeISO() | Returns a new ZonedDatetime object |
| Formatting | |
| toJSON() | Returns an RFC 9557 format string for JSON serialization |
| toLocaleString() | Returns a language-sensitive representation of the instant |
| toString() | Returns an RFC 9557 format string representation of the instant |
| valueOf() | Throws a TypeError (Instants should not be converted to a primitives) |