Aleks G
Aleks G

Reputation: 57346

Javascript users incorrect locale with date formatting

In javascript I'm using Date.toLocaleDateString to format my dates in the user's locale. While in theory it should work, it doesn't.

I am located in the UK. My computer is set to UK and my default language is set to en/gb in both system settings and the browser content settings. Yet, Firefox always displays dates the US format. Is there some trick I'm missing?

The full code for formatting is this:

var timestamp = ...; //some value from ajax call
var dt = new Date(timestamp);
$('#audit-date').text(dt.toLocaleDateString());

In the UK for today's date I would expect to see 05/02/2014, but I see 02/05/2014, which is the US version of it.

Upvotes: 13

Views: 25521

Answers (2)

Jas
Jas

Reputation: 71

Use this to pass the locale.

var locale = window.navigator.userLanguage || window.navigator.language;
alert(date.toLocaleString(locale));

Upvotes: 6

Tilman Schweitzer
Tilman Schweitzer

Reputation: 1487

A quick look into to awesome MDN Documentation tells me that you need a locale parameter, otherwise the result depends on the browser. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

// British English uses day-month-year order
alert(date.toLocaleString("en-GB"));
// → "20/12/2012 03:00:00"

For more custom date formats I use the moment.js library. http://momentjs.com/

Upvotes: 4

Related Questions