The Intl.DateTimeFormat.prototype.format()
method formats a date according to the locale and formatting options of this Intl.DateTimeFormat
object.
The Intl.DateTimeFormat.prototype.format()
method formats a date according to the locale and formatting options of this Intl.DateTimeFormat
object.
format(date)
date
The date to format.
The format
getter formats a date into a string according to the locale and formatting options of this Intl.DateTimeFormat
object.
Use the format
getter function for formatting a single date, here for Serbia:
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; const dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options); console.log(dateTimeFormat.format(new Date())); // → "недеља, 7. април 2013."
Use the format
getter function for formatting all dates in an array. Note that the function is bound to the Intl.DateTimeFormat
from which it was obtained, so it can be passed directly to Array.prototype.map()
.
const a = [new Date(2012, 8), new Date(2012, 11), new Date(2012, 3)]; const options = { year: 'numeric', month: 'long' }; const dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options); const formatted = a.map(dateTimeFormat.format); console.log(formatted.join('; ')); // → "setembro de 2012; dezembro de 2012; abril de 2012"
Most of the time, the formatting returned by format()
is consistent. However, this might change in the future and isn't guaranteed for all the languages — output variations are by design and allowed by the specification. Most notably, the IE and Edge browsers insert bidirectional control characters around dates, so the output text will flow properly when concatenated with other text.
For this reason you cannot expect to be able to compare the results of format()
to a static value:
let d = new Date("2019-01-01T00:00:00.000000Z"); let formattedDate = Intl.DateTimeFormat(undefined, { year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }).format(d); "1.1.2019, 01:00:00" === formattedDate; // true in Firefox and others // false in IE and Edge
Note: See also this StackOverflow thread for more details and examples.
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl.datetimeformat.prototype.format |
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | Deno | Node.js | |
format |
24 |
12 |
29 |
11 |
15 |
10 |
4.4 |
25 |
56 |
14 |
10 |
1.5 |
1.8 |
0.12.0
Before version 13.0.0, only the locale data for
en-US is available by default. See the DateTimeFormat() constructor for more details. |
© 2005–2022 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/format