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 stores nanoseconds since January 1, 1970 00:00:00. (the Unix epoch).
What is Instant Time?
An Instant is:
- A Precise Point in Time
- Measured in UTC
- The Same Everywhere on Earth
Instant Time (in JavaScript Temporal) means:
An exact moment on the global timeline, independent of time zones.
The above example represents:
Exactly May 17, 2026 at 14:30 UTC.
No matter where you are, this moment is the same.
What is UTC Time?
UTC time is:
- The Same Everywhere on Earth
- Not Affected by Time Zones
- Not Affected by DST (Daylight Saving Time)
Example
UTC time: 12:00
Oslo (UTC+2) 14:00
New York (UTC-4) 08:00
Tokyo (UTC+9) 21:00
Different locations show different local times.
But all represent the same Instant.
Creating an Instant
An Instant can be created in several different ways:
| From | Code |
|---|---|
| With Constructor | new Temporal.Instant() |
| From String | Temporal.Instant.from("2026-05-17T14:39:00Z') |
| From Epoch millisec | Temporal.Instant.fromEpochMilliseconds() |
| From Epoch nanosec | Temporal.Instant.fromEpochNanoseconds() |
| From 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) |