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 TOOLS

Basic JavaScript

JS Tutorial JS Introduction JS Where To JS Output

JS Syntax

JS Syntax JS Statements JS Comments JS Variables JS Let JS Const JS Types

JS Operators

JS Operators

JS If Else

JS If Conditions

JS Loops

JS Loops

JS Strings

JS Strings

JS Numbers

JS Numbers

JS Functions

JS Functions

JS Objects

JS Objects

JS Scope

JS Scope

JS Dates

JS Dates

JS Temporal

JS Temporal  New

JS Arrays

JS Arrays

JS Sets

JS Sets

JS Maps

JS Maps

JS Iterations

JS Loops

JS Math

JS Math

JS RegExp

JS RegExp

JS DataTypes

JS Data Types

JS Errors

JS Errors

JS Debugging

JS Debugging

JS Conventions

JS Style Guide

JS Reference

JS Statements

JS Projects

JS Projects New

JS Versions

JS 2026

JS HTML

JS HTML DOM JS Events

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


Temporal Date Formats

Temporal dates can be serialized as strings in different ways:

NameDescription
ISO 8601International standard
RFC 3339Internet standard
RFC 9557Temporal standard
toString()JavaScript method
toLocaleString()JavaScript method
Intl.DateTimeFormat()JavaScript method

The ISO 8601 Standard

ISO 8601 is the International Standard for representing dates and times.

ISO 8601

ISO 8601 is a machine-readable format (YYYY-MM-DD) designed to eliminate confusion caused by regional date variations.

It follows a "largest to smallest" hierarchy (year, month, day, hour, minute, second) which ensures that dates are alphabetically sortable.

ISO 8601 avoids confusion between regional formats like:

  • MM/DD/YYYY (US format)
  • DD/MM/YYYY (European format)

ISO 8601 Strings

An ISO 8601 string represents dates and times in a structured and sortable format:

FormatDescription
YYYYA 4-digit year
MM2-digit month
DD2-digit day
TSeparator for time
hhHour
mmMinute
ssSecond
ZZero (Zulu) time Zone

Examples

FormatFormatExample
Date (4-digit year)YYYY-MM-DD2026-05-17
Time (24 hour)hh:mm:ss 14:30:00
Date & TimeYYYY-MM-DDThh:mm:ssZ2026-05-17T14:30:00Z
Date & Time UTCYYYY-MM-DDThh:mm:ssZ2026-05-17T14:30:00Z
Date & Time + OffsetYYYY-MM-DDThh:mm:ss±hh:mm2026-05-17T14:30:00+01:00
Week DateYYYY-Www-D2026-W20-7
Ordinal (001-366)YYYY-nnn2026-074
Duration formatPnYnMnDTnHnMnSP3Y6M4DT12H30M5S

The RF 3339 Format

RFC 3339 is the Internet Standard for Date and Time Formats.

It is a Subset of ISO 8601 designed for use in Internet protocols.

FeatureDescription
Format Follows the ISO pattern YYYY-MM-DDThh:mm:ssZ
Time Zones Requires a Z for time zone UTC or an offset (+05:00)
T Separator Allows the "T" separator to be replaced by " " for readability
Web APIs The default format for timestamps in JSON and RESTful APIs
Programming Modern languages have bult-in support like toISOString()

The RFC 9557 Format

RFC 9557 is the primary format used by JavaScript Temporal to represent dates.

FeatureISO 8601RFC 3339RFC 9557
FormatYYYY-MM-DDThh:mm:ssZSameSame
UTC OffsetYesYesYes
IANA ZoneNoNo[America/New_York]
CalendarISO onlyISO only[u-ca=hebrew]
CompabileThe StandardSubset of ISO 8601Extends 3339

RFC 9557 was created because ISO 8601 and RFC 3339 did not contain enough information to determine the geographical time zone or handle future DST (Daylight Saving Time) changes.


Format with toString()

The toString() method returns a standard ISO string.

Example

const date = Temporal.PlainDate.from("2026-02-17");

let text = date.toString();

Result:

2026-02-17

Format PlainTime

A PlainTime value is formatted as a time string.

Example

const time = Temporal.PlainTime.from("14:30:15");

let text = time.toString();

Result:

14:30:15

Format PlainDateTime

A PlainDateTime value includes both date and time.

Example

const dateTime = Temporal.PlainDateTime.from("2026-02-17T14:30:15");

let text = dateTime.toString();

Result:

2026-02-17T14:30:15

Format ZonedDateTime

A ZonedDateTime string includes the offset and time zone.

Example

const zoned = Temporal.ZonedDateTime.from(
"2026-02-17T14:30:15+01:00[Europe/Oslo]");
let text = zoned.toString();

Result:

2026-02-17T14:30:15+01:00[Europe/Oslo]

Remove Smaller Time Units

You can control how much detail to include.

For example, you can hide seconds or milliseconds.

Example

const time = Temporal.PlainTime.from("14:30:15.123");

let text = time.toString({ smallestUnit: "minute" });

Result:

14:30

Control Fractional Digits

You can choose how many decimal digits to include.

Example

const time = Temporal.PlainTime.from("14:30:15.123456789");

let text = time.toString({ fractionalSecondDigits: 3 });

Result:

14:30:15.123

Format with toLocaleString()

Use toLocaleString() to format a value using the user's locale.

Example

const date = Temporal.PlainDate.from("2026-02-17");

console.log(date.toLocaleString("en-US"));
console.log(date.toLocaleString("de-DE"));

The output depends on the chosen locale.


Format with Intl.DateTimeFormat

Use Intl.DateTimeFormat when you need more control over the output.

Example

const date = Temporal.PlainDate.from("2026-02-17");

const formatter = new Intl.DateTimeFormat("en-US", {
  year: "numeric",
  month: "long",
  day: "numeric"
});

let text = formatter.format(date);

Result:

February 17, 2026

Format Date and Time Together

You can format a PlainDateTime with both date and time options.

Example

const dateTime = Temporal.PlainDateTime.from("2026-02-17T14:30:15");

const formatter = new Intl.DateTimeFormat("en-GB", {
  year: "numeric",
  month: "short",
  day: "numeric",
  hour: "2-digit",
  minute: "2-digit"
});

let text = formatter.format(dateTime);

Format ZonedDateTime in a Locale

When formatting a ZonedDateTime, the time zone is included in the calculation.

Example

const zoned = Temporal.ZonedDateTime.from(
"2026-02-17T14:30:15+01:00[Europe/Oslo]");

const formatter = new Intl.DateTimeFormat("en-US", {
  dateStyle: "full",
  timeStyle: "short"
});

let text = formatter.format(zoned);

When to Use Each Method

  • Use toString() for standard ISO output.

  • Use toLocaleString() for simple local formatting.

  • Use Intl.DateTimeFormat for custom formatting.


×

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.

-->