bugl
bugl
HomeLearnPatternsSearch
HomeLearnPatternsSearch

Loading lesson path

Learn/JavaScript/Objects, Classes, and Advanced Patterns
JavaScript•Objects, Classes, and Advanced Patterns

JavaScript Temporal Intro

What is JavaScript Temporal?

Temporal is the new standard for date and time in JavaScript. New Temporal objects were designed to replace the old Date object. Unlike legacy Date, Temporal objects are immutable and provide first-class support for time zones, daylight saving time, date arithmetic and non-Gregorian calendars.

Why Was Temporal Created?

The

Date object was created in 1995 and has some design issues that still cause bugs today. For example, months in

Formula

Date are zero - based, which is confusing.

Example

let d = new Date(2026, 5, 17); // Month 5 = June

Another problem is that many

Date methods change the same object (mutation), which can create unexpected results.

Example

// Create a Date let d = new Date(2026, 5, 17);
// Add 7 days d.setDate(d.getDate() + 7);
// Here the original date (d) is lost

Temporal was created to solve these issues with clearer object types and predictable behavior.

A Simple Temporal Example

With Temporal, you can get today's date and add days in a clear and safe way.

Example

// Create a Temporal object const today = Temporal.Now.plainDateISO();

Formula

// Add a duration const nextWeek = today.add({ days: 7 });

Compare With Date

With

JavaScript Date, you only have one type of date object.

Date Example

let d = new Date();

Separate Objects

Temporal gives you separate objects depending on what you need:

Instant

  • Exact moment in UTC

PlainDate

  • Date only

PlainDateTime

  • Date and time only

ZonedDateTime

  • Date and time with zone

When to Use Each Object

Instant

  • For timestamps and comparisons

PlainDate

  • For birthdays and calendar dates

PlainDateTime

  • For local scheduling tasks

ZonedDateTime

Formula

- For time zone - aware apps

Temporal Objects are Immutable

Temporal objects are immutable, which means they cannot be changed after they are created.

Temporal objects return a new value instead of modifying the existing one.

Temporal Dates are DST-Safe

Formula

DST - safe arithmetic ensures time calculations (addition and subtraction) remain accurate across
Daylight Saving Time (DST) transitions, preventing 1 - hour errors.
It involves using timezone and calendar - aware objects (ZonedDateTime) that understand local clock shifts.

Temporal Dates Uses RFC 5545

Previous

JavaScript Objects

Next

JavaScript Iterables