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?
Instant time is:
- A precise point in time
- Measured in UTC
- The same moment everywhere on earth
Note
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 at Greenwich in London.
What is UTC Time?
UTC stands for Universal Time Coordinated.
UTC time is:
- The exact time in Greenwich (London)
- The same everywhere on earth
- Not affected by time zones
- Not affected by DST (Daylight Saving Time)
Example
London (UTC): 12:00
Oslo (UTC+2): 14:00
New York (UTC-4): 08:00
Tokyo (UTC+9): 21:00
Note
Different locations show different local times.
But all represent the same Instant in UTC time.
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:30: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():
The property epochMilliseconds returns the timestamp value in
milliseconds:
Example
const instant = Temporal.Now.instant();
let timestamp = instant.epochMilliseconds;
Try it Yourself »
The property epochNanoseconds returns the timestamp value in
nanoseconds:
Example
const instant = Temporal.Now.instant();
let timestamp = instant.epochNanoseconds;
Try it Yourself »
Note
Nanosecond precision is 1,000,000 (one million) times higher than millisecond precision.
Convert Instant Time to Local Time
A Temporal.Instant does not include time zone information.
You must convert it to a Temporal.ZonedDateTime to display local time.
toZonedDateTimeISO converts a 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 »
Note
Instant = "What time is it globally?"
ZonedDateTime = "What time is it here?"
UTC vs Local Time
UTC is a global clock.
Time zone is the local view of the same clock.
| Type | Description |
|---|---|
| UTC | Same worldwide |
| Local Time | Depends on Location |
Note
UTC (Coordinated Universal Time) is the standard time used worldwide.
It is not affected by any time zones or daylight saving time.
Why UTC is Important
UTC is used as a reference time:
- Servers and databases store time in UTC
- Logs use UTC timestmps to avoid ime confusion
- Most APIs use UTC timestamps
When to Use Temporal.Instant
Use Temporal.Instant for:
- Timestamps
- Databases
- Logs
- Event tracking
- Comparing moments
Note
Use Instant for an exact moment in UTC time, not what it is in another time zone.
Compare with Other Types
| Type | Meaning |
|---|---|
| Instant | Exact Moment (UTC) |
| PlainDateTime | Local Date and Time (No Timezone) |
| ZonedDateTime | Local Date and Time + 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) |