Intl.DateTimeFormat() constructor
The Intl.DateTimeFormat() constructor creates Intl.DateTimeFormat objects that enable language-sensitive date and time formatting.
Syntax
new Intl.DateTimeFormat() new Intl.DateTimeFormat(locales) new Intl.DateTimeFormat(locales, options)
Parameters
-
localesOptional -
A string with a BCP 47 language tag, or an array of such strings. To use the browser's default locale, pass an empty array. Unicode extension are supported (for example "
en-US-u-ca-buddhist"). For the general form and interpretation of thelocalesargument, see the Intl page. The following Unicode extension keys are allowed:nu-
Numbering system. Possible values include: "
arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt". ca-
Calendar. Possible values include: "
buddhist", "chinese", "coptic", "ethiopia", "ethiopic", "gregory", "hebrew", "indian", "islamic", "iso8601", "japanese", "persian", "roc". hc-
Hour cycle. Possible values include: "
h11", "h12", "h23", "h24".
-
optionsOptional -
An object with some or all of the following properties:
dateStyle-
The date formatting style to use when calling
format(). Possible values include:- "
full" - "
long" - "
medium" - "
short"
Note:
dateStylecan be used withtimeStyle, but not with other options (e.g.weekday,hour,month, etc.). - "
timeStyle-
The time formatting style to use when calling
format(). Possible values include:- "
full" - "
long" - "
medium" - "
short"
Note:
timeStylecan be used withdateStyle, but not with other options (e.g.weekday,hour,month, etc.). - "
calendar-
Calendar. Possible values include: "
buddhist", "chinese", "coptic", "ethiopia", "ethiopic", "gregory", "hebrew", "indian", "islamic", "iso8601", "japanese", "persian", "roc". dayPeriod-
The formatting style used for day periods like "in the morning", "am", "noon", "n" etc. Possible values include: "
narrow", "short", "long".Note:
- This option only has an effect if a 12-hour clock is used.
- Many locales use the same string irrespective of the width specified.
numberingSystem-
Numbering System. Possible values include: "
arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt". localeMatcher-
The locale matching algorithm to use. Possible values are "
lookup" and "best fit"; the default is "best fit". For information about this option, see the Intl page. timeZone-
The time zone to use. The only value implementations must recognize is "
UTC"; the default is the runtime's default time zone. Implementations may also recognize the time zone names of the IANA time zone database, such as "Asia/Shanghai", "Asia/Kolkata", "America/New_York". hour12-
Whether to use 12-hour time (as opposed to 24-hour time). Possible values are
trueandfalse; the default is locale dependent. This option overrides thehclanguage tag and/or thehourCycleoption in case both are present. hourCycle-
The hour cycle to use. Possible values are "
h11", "h12", "h23", or "h24". This option overrides thehclanguage tag, if both are present, and thehour12option takes precedence in case both options have been specified. formatMatcher-
The format matching algorithm to use. Possible values are "
basic" and "best fit"; the default is "best fit". See the following paragraphs for information about the use of this property.
The following properties describe the date-time components to use in formatted output, and their desired representations. Implementations are required to support at least the following subsets:
-
weekday,year,month,day,hour,minute,second -
weekday,year,month,day -
year,month,day -
year,month -
month,day -
hour,minute,second -
hour,minute
Implementations may support other subsets, and requests will be negotiated against all available subset-representation combinations to find the best match. Two algorithms are available for this negotiation and selected by the
formatMatcherproperty: A fully specified "basic" algorithm and an implementation-dependent "best fit" algorithm.weekday-
The representation of the weekday. Possible values are:
- "
long" (e.g.,Thursday) - "
short" (e.g.,Thu) - "
narrow" (e.g.,T). Two weekdays may have the same narrow style for some locales (e.g.Tuesday's narrow style is alsoT).
- "
era-
The representation of the era. Possible values are:
- "
long" (e.g.,Anno Domini) - "
short" (e.g.,AD) - "
narrow" (e.g.,A)
- "
year-
The representation of the year. Possible values are:
- "
numeric" (e.g.,2012) - "
2-digit" (e.g.,12)
- "
month-
The representation of the month. Possible values are:
- "
numeric" (e.g.,2) - "
2-digit" (e.g.,02) - "
long" (e.g.,March) - "
short" (e.g.,Mar) - "
narrow" (e.g.,M). Two months may have the same narrow style for some locales (e.g.May's narrow style is alsoM).
- "
day-
The representation of the day. Possible values are:
- "
numeric" (e.g.,1) - "
2-digit" (e.g.,01)
- "
hour-
The representation of the hour. Possible values are "
numeric", "2-digit". minute-
The representation of the minute. Possible values are "
numeric", "2-digit". second-
The representation of the second. Possible values are "
numeric", "2-digit". fractionalSecondDigits-
The number of digits used to represent fractions of a second (any additional digits are truncated). Possible values are:
-
0(Fractional part dropped.) -
1(Fractional part represented as 1 digit. For example, 736 is formatted as7.) -
2(Fractional part represented as 2 digits. For example, 736 is formatted as73.) -
3(Fractional part represented as 3 digits. For example, 736 is formatted as736.)
-
timeZoneName-
The localized representation of the time zone name. Possible values are:
- "
long" Long localized form (e.g.,Pacific Standard Time,Nordamerikanische Westküsten-Normalzeit) - "
short" Short localized form (e.g.:PST,GMT-8) - "
shortOffset" Short localized GMT format (e.g.,GMT-8) - "
longOffset" Long localized GMT format (e.g.,GMT-0800) - "
shortGeneric" Short generic non-location format (e.g.:PT,Los Angeles Zeit). - "
longGeneric" Long generic non-location format (e.g.:Pacific Time,Nordamerikanische Westküstenzeit)
Note: Timezone display may fall back to another format if a required string is unavailable. For example, the non-location formats should display the timezone without a specific country/city location like "Pacific Time", but may fall back to a timezone like "Los Angeles Time".
- "
The default value for each date-time component property is
undefined, but if all component properties areundefined, thenyear,month, anddayare assumed to be "numeric".
Examples
Using DateTimeFormat
In basic use without specifying a locale, DateTimeFormat uses the default locale and default options.
let date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); // toLocaleString without arguments depends on the implementation, // the default locale, and the default time zone console.log(new Intl.DateTimeFormat().format(date)); // → "12/19/2012" if run with en-US locale (language) and time zone America/Los_Angeles (UTC-0800)
Using timeStyle and dateStyle
let o = new Intl.DateTimeFormat("en" , { timeStyle: "short" }); console.log(o.format(Date.now())); // "13:31 AM" let o = new Intl.DateTimeFormat("en" , { dateStyle: "short" }); console.log(o.format(Date.now())); // "07/07/20" let o = new Intl.DateTimeFormat("en" , { timeStyle: "medium", dateStyle: "short" }); console.log(o.format(Date.now())); // "07/07/20, 13:31:55 AM"
Using dayPeriod
Use the dayPeriod option to output a string for the times of day ("in the morning", "at night", "noon", etc.). Note, that this only works when formatting for a 12 hour clock (hourCycle: 'h12') and that for many locales the strings are the same irrespective of the value passed for the dayPeriod.
let date = Date.UTC(2012, 11, 17, 4, 0, 42); console.log(new Intl.DateTimeFormat('en-GB', { hour: 'numeric', hourCycle: 'h12', dayPeriod: 'short', timeZone: 'UTC' }).format(date)); // > 4 at night" (same formatting in en-GB for all dayPeriod values) console.log(new Intl.DateTimeFormat('fr', { hour: 'numeric', hourCycle: 'h12', dayPeriod: 'narrow', timeZone: 'UTC' }).format(date)); // > "4 mat." (same output in French for both narrow/short dayPeriod) console.log(new Intl.DateTimeFormat('fr', { hour: 'numeric', hourCycle: 'h12', dayPeriod: 'long', timeZone: 'UTC' }).format(date)); // > "4 du matin"
Using timeZoneName
Use the timeZoneName option to output a string for the timezone ("GMT", "Pacific Time", etc.).
var date = Date.UTC(2021, 11, 17, 3, 0, 42); const timezoneNames = ['short', 'long', 'shortOffset', 'longOffset', 'shortGeneric', 'longGeneric'] for (const zoneName of timezoneNames) { // Do something with currentValue var formatter = new Intl.DateTimeFormat('en-US', { timeZone: 'America/Los_Angeles', timeZoneName: zoneName, }); console.log(zoneName + ": " + formatter.format(date) ); } // expected output: // > "short: 12/16/2021, PST" // > "long: 12/16/2021, Pacific Standard Time" // > "shortOffset: 12/16/2021, GMT-8" // > "longOffset: 12/16/2021, GMT-08:00" // > "shortGeneric: 12/16/2021, PT" // > "longGeneric: 12/16/2021, Pacific Time"
Specifications
| Specification |
|---|
| ECMAScript Internationalization API Specification (ECMAScript Internationalization API) # sec-intl-datetimeformat-constructor |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
DateTimeFormat |
24 |
12 |
29 |
11 |
15 |
10 |
4.4 |
25 |
56 |
14 |
10 |
1.5 |
locales_parameter |
24 |
12 |
29 |
11 |
15 |
10 |
4.4 |
25 |
56 |
14 |
10 |
1.5 |
options_parameter |
24 |
12 |
29 |
11 |
15 |
10 |
4.4 |
25 |
56 |
14 |
10 |
1.5 |
See also
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat