Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING INTRO TO HTML & CSS BASH RUST

Basic JavaScript

JS Tutorial JS Syntax JS Variables JS Operators JS If Conditions JS Loops JS Strings JS Numbers JS Functions JS Objects JS Scope JS Dates JS Temporal Dates JS Arrays JS Sets JS Maps JS Iterations JS Math JS RegExp JS Destructuring JS Data Types JS Errors JS Debugging JS Conventions JS References JS 2026 JS Versions

JS HTML

JS HTML DOM JS Events JS Projects New

JS Advanced

JS Functions JS Objects JS Classes JS Asynchronous JS Modules JS Meta & Proxy JS Typed Arrays JS DOM Navigation JS Windows JS Web APIs JS AJAX JS JSON JS jQuery JS Graphics JS Examples JS Reference


JavaScript Temporal

What is JavaScript Temporal?

Temporal is the new standard for date and time in JavaScript.

New Temporal objects was 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 (DST), date math and non-Gregorian calendars.

Temporal separates date and time into distinct classes to prevent "wall-clock" errors.

Temporal Map

What Is Temporal?

Temporal is a built-in JavaScript API that provides date and time objects that are easier and safer to use than Date.

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

Feature Date Temporal
Mutable (can change) Yes No
Time zone handling Limited Built-in
DST safe math No Yes
Modern API design No Yes

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 Date are zero-based, which is confusing.

Example

let d = new Date(2026, 0, 17); // Month 0 = January

Another problem is that many Date methods change the same object (mutation), which can create unexpected results.

Example

let d = new Date(); d.setDate(d.getDate() + 7); // Changes the original object

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

let today = Temporal.Now.plainDateISO(); let nextWeek = today.add({ days: 7 });

Notice that today is not changed.

Temporal returns a new value instead of modifying the existing one.



DST-Safe Arithmetic

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.


RFC 5545 iCalendar

RFC 5545, titled iCalendar (Internet Calendaring and Scheduling Core Object Specification), is the industry standard for exchanging calendar and scheduling information.

It allows different systems (like Google Calendar, Apple Calendar, and Microsoft Outlook) to communicate seamlessly.


When Should You Use Temporal?

Use Temporal when you need reliable date and time handling.

  • You need correct time zone support.

  • You want safe date arithmetic (add or subtract days, months, years).

  • You want to avoid DST bugs.

  • You want predictable and readable code.

You may still use Date for very simple tasks, or when you must support environments where Temporal is not available.


Temporal Object Types

Temporal includes several object types for different kinds of date and time values:

  • Temporal.Instant - An exact moment in time (UTC timestamp).

  • Temporal.PlainDate - A date only (year, month, day).

  • Temporal.PlainDateTime - Date and time without a time zone.

  • Temporal.ZonedDateTime - Date and time with a time zone.

  • Temporal.Duration - A length of time (days, hours, minutes).

In this tutorial, you will learn how each type works and when to use it.



Summary

Temporal is the modern way to work with dates and times in JavaScript.

Temporal fixes common Date problems like time zones, DST bugs, and confusing date math.


Next Chapter

Next, you will learn about Temporal vs Date and how Temporal objects work.


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookies and privacy policy.

Copyright 1999-2026 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.

-->