The Intl.DateTimeFormat()
constructor for objects that enable language-sensitive date and time formatting.
Syntax
new Intl.DateTimeFormat([locales[, options]])
Parameters
locales
Optional-
A string with a BCP 47 language tag, or an array of such strings. To use the browser's default locale, omit this argument or pass
undefined
. Unicode extension are supported (for example "en-US-u-ca-buddhist
"). For the general form and interpretation of thelocales
argument, 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
".
options
Optional-
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
"
- "
timeStyle
- The time formatting style to use when calling
format()
. Possible values include:- "
full
" - "
long
" - "
medium
" - "
short
"
- "
fractionalSecondDigits
- The number of fractional seconds to apply when calling
format()
. Valid values are 0-3. 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
true
andfalse
; the default is locale dependent. This option overrides thehc
language tag and/or thehourCycle
option in case both are present. hourCycle
- The hour cycle to use. Possible values are "
h11
", "h12
", "h23
", or "h24
". This option overrides thehc
language tag, if both are present, and thehour12
option 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
formatMatcher
property: 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
". 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
, andday
are 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
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
|
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 No support No | 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 No support No | 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.