In the articles we have about dates in JavaScript we were missing one about how to create dates in local format with JavaScript. That is to say, being able to internationalise (i18n) the date before printing it. Many of you may be saying, "we have already seen this using the Intl object". And it is true. But in this case we are going to see the capabilities that the Date
object has directly to be able to perform this internationalisation (i18n).
The first thing to do is to create a date using the Date object. In this case we are going to use the .UTC()
method to create a specific date as follows:
const mydate = new Date(Date.UTC(2021, 02, 15, 12, 0, 0));
The next step is to see how we can give the local format. For this we are going to rely on the method .toLocaleDateString()
which receives on the one hand a string following the BCP 47 specification.
This is basically two pairs of characters separated by a hyphen in which the language and country can be identified. So we have es-ES Spanish for Spain, en-UK which would be English in the United Kingdom, en-US which would be English in the United States or ar-EG which would be Arabic in Egypt.
The second parameter is a JSON element in which we can indicate the localisation options. These options include the following:
- weekday, how we want the day of the week to be represented: narrow, short or long.
- year, whether we want it to be four digits (numeric) or two digits (2-digit).
- month, we can display it with one digit (numeric), with two digits (2-digit), narrow, short or long.
- day, which can be one-digit (numeric) or two-digit (2-digit).
We could then have the following configuration of options for displaying the date.
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
The truth is that at this point there is a little "trick" and that is that the.toLocaleDateString()
method is actually executing the constructor of theIntl.DateTimeFormat
.
Now we invoke the .toLocaleDateString()
method with the locale string plus the options. So we have the following options that would be displayed by console.
// Castellano // domingo, 15 de marzo de 2021 console.log(mydate.toLocaleDateString('es-ES', options)); // Alemán // Sonntag, 15. März 2021 console.log(mydate.toLocaleDateString('de-DE', options)); // Árabe // الأحد، ١٥ مارس ٢٠٢٠ console.log(mydate.toLocaleDateString('ar-EG', options)); // Por defecto del sistema // domingo, 15 de marzo de 2021 console.log(fmydate.toLocaleDateString(undefined, options));
In this simple way we have been able to show dates in local format with JavaScript.