Reputation: 62773
In the past I've always said it's not possible to display the date/time in the format as defined by the user in their OS preferences. For example, I may have EN-US as my language/region but prefer to use a 24-hour time format. Or, I may have changed the short
date format from mm/dd/yyyy
to mm/dd/yy
.
Has this changed now that Intl.DateTimeFormat
can use dateStyle
and timeStyle
values? Note: these options are not supported in all browsers at the time of writing this.
The values for dateStyle
and timeStyle
are:
full
long
medium
short
These predefined formats (full
, long
, etc) can be defined by the user in their system preferences, like this.
Do the values of dateStyle
and timeStyle
use the same format as defined in the OS preferences for the values of full
, long
, etc?
Here's an example. In the snippet below I have used toLocaleString
to display the current date/time. For the options I have passed dateStyle: 'long'
and timeStyle: 'long'
. Will this use the same format as defined in my OS preferences even if I change the 'long' format to a custom format?
const event = new Date();
console.log(event.toLocaleString(undefined, { dateStyle: 'long', timeStyle: 'long', timeZone: 'UTC' }));
Upvotes: 1
Views: 7970
Reputation: 5271
Sometimes.
dateStyle and timeStyle addition is a stage 3 proposal, so they are not yet fully finalized. That said, the question is not really about these specific options, but rather about how the engine decides to retrieve the default locale settings and whether it includes the customizations the user has made.
The ECMAscript specification describes the default locale as implementation-specific, so it’s up to the engine to make this decision. See more details in another answer.
It makes a lot of good sense to use the user’s OS preferences, and Edge does so. However, Chrome and Firefox allow the user to choose the browser language independently, and this causes inconsistencies with how the rest of the application behaves. See a more thorough discussion in Firefox bug 1366136.
So to summarize, the answer is dateStyle and timeStyle will sometimes take user’s OS preferences into account, and sometimes they will not.
Upvotes: 1