Web/JavaScript/Reference/Global objects/Intl/DateTimeFormat/DateTimeFormat
The Intl.DateTimeFormat() constructor for objects that enable language-sensitive date and time formatting.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
new Intl.DateTimeFormat([locales[, options]])
Parameters
localesOptionalA 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".
optionsOptionalAn 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"
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"
- "
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 way day periods should be expressed. Possible values include: "
narrow", "short", "long". 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,secondweekday,year,month,dayyear,month,dayyear,monthmonth,dayhour,minute,secondhour,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". fractionalSecondDigitsAdded in Firefox 84, Chrome 84, etc. See compatibility table for more information.
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 as
73.) - 3 (Fractional part represented as 3 digits. For example, 736 is formatted as
736.)
timeZoneName- The representation of the time zone name. Possible values are:
- "
long" (e.g.,British Summer Time) - "
short" (e.g.,GMT+1)
- "
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.
var 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"
Specifications
| Specification |
|---|
| ECMAScript Internationalization API (ECMA-402)The definition of 'Intl.DateTimeFormat' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DateTimeFormat() constructor
|
Chrome
Full support 24 |
Edge
Full support 12 |
Firefox
Full support 29 |
IE
Full support 11 |
Opera
Full support 15 |
Safari
Full support 10 |
WebView Android
Full support 4.4 |
Chrome Android
Full support 25 |
Firefox Android
Full support 56 |
Opera Android
Full support 14 |
Safari iOS
Full support 10 |
Samsung Internet Android
Full support 1.5 |
nodejs Full support 13.0.0 Full support 13.0.0 Partial support 0.12 Notes' Before version 13.0.0, only the locale data for |
dateStyle
|
Chrome
Full support 76 |
Edge
No support No |
Firefox
Full support 79 |
IE
No support No |
Opera
Full support 63 |
Safari
No support No |
WebView Android
Full support 76 |
Chrome Android
Full support 76 |
Firefox Android
Full support 79 |
Opera Android
Full support 54 |
Safari iOS
No support No |
Samsung Internet Android
No support No |
nodejs
Full support 12.9.0 |
hourCycle
|
Chrome
Full support 73 |
Edge
Full support 18 |
Firefox
Full support 58 |
IE
No support No |
Opera
Full support 60 |
Safari
Full support 13 |
WebView Android
Full support 73 |
Chrome Android
Full support 73 |
Firefox Android
Full support 58 |
Opera Android
Full support 52 |
Safari iOS
Full support 13 |
Samsung Internet Android
No support No |
nodejs
Full support 12.0.0 |
IANA time zone names in timeZone option
|
Chrome
Full support 24 |
Edge
Full support 14 |
Firefox
Full support 52 |
IE
No support No |
Opera
Full support 15 |
Safari
Full support 10 |
WebView Android
Full support 37 |
Chrome Android
Full support 25 |
Firefox Android
Full support 56 |
Opera Android
Full support 14 |
Safari iOS
Full support 10 |
Samsung Internet Android
Full support 1.5 |
nodejs
Full support 4.0.0 |
timeStyle
|
Chrome
Full support 76 |
Edge
No support No |
Firefox
Full support 79 |
IE
No support No |
Opera
Full support 63 |
Safari
No support No |
WebView Android
Full support 76 |
Chrome Android
Full support 76 |
Firefox Android
Full support 79 |
Opera Android
Full support 54 |
Safari iOS
No support No |
Samsung Internet Android
No support No |
nodejs
Full support 12.9.0 |
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.'
- See implementation notes.
Implementation Progress
The following table provides a daily implementation status for new features that has not yet reached cross-browser stability. The data is generated by running the relevant feature tests in Test262, the standard test suite of JavaScript, in the nightly build, or latest release of each browser's JavaScript engine.
See also
Intl
Intl.DateTimeFormat() constructor by Mozilla Contributors is licensed under CC-BY-SA 2.5.