JS Temporal Differences
Calculate Temporal Differences
The since() method calculates the since duration between two dates.
The until() method calculates the until duration between two dates.
The since() and until() are effectivly the inverse of each other.
JavaScript Temporal since() and until()
All temporal date objects have their own since() method:
- plaindate.since(plaindate)
- plaintime.since(plaintime)
- plainyearmonth.since(plainyearmonth)
- plainmonthday.since(plainmonthday)
- plaindatetime.since(plaindatetime)
- zoneddatetime.since(zoneddatetime)
- instant.since(instant)
All temporal objects have their own until() method:
- plaindate.until(plaindate)
- plaintime.until(plaintime)
- plainyearmonth.until(plainyearmonth)
- plainmonthday.until(plainmonthday)
- plaindatetime.until(plaindatetime)
- zoneddatetime.until(zoneddatetime)
- instant.until(instant)
JavaScript Temporal since()
The since() method calculates the duration between two temporal dates.
Syntax
t1.since(t2, options)
Meaning
At time t1, how much time has passed since time t2 ?
Example
const start = Temporal.PlainDate.from("2026-05-01");
const end = Temporal.PlainDate.from("2026-05-17");
const duration = start.since(end);
Try it Yourself »
JavaScript Temporal until()
The until() method calculates the duration between two temporal dates.
The until() method is effectively the inverse of the
since() method.
Syntax
t1.until(t2, options)
Meaning
At time t1, how much time is it until t2 ?
Example
const start = Temporal.PlainDate.from("2026-05-01");
const end = Temporal.PlainDate.from("2026-05-17");
const duration = start.until(end);
Try it Yourself »
Temporal since() vs until()
The methods are opposites.
| Method | Meaning |
|---|---|
| a.since(b) | time from b → a |
| a.until(b) | time from a → b |
Example
const start = Temporal.PlainDate.from("2026-05-01");
const end = Temporal.PlainDate.from("2026-05-17");
const duration1 = start.since(end);
const duration2 = start.until(end);
Try it Yourself »
Think:
- since = past (since yesterday)
- until = future (until tomorrow)
The Options Parameters
Example
const wedding = Temporal.PlainDate.from("2000-05-17");
const today = Temporal.Now.plainDateISO();
const duration = today.since(wedding);
Try it Yourself »
The since() method returns the total number of days,
but you can use the largestUnit option to break it down into years and months:
Example
const wedding = Temporal.PlainDate.from("2000-05-17");
const today = Temporal.Now.plainDateISO();
const duration = today.since(wedding, {largestUnit:'years'});
Try it Yourself »
Example: Plain Time
const start = Temporal.PlainTime.from("09:00");
const end = Temporal.PlainTime.from("17:30");
const duration = end.since(start);
Try it Yourself »