2014-02-05 4 views
4

В javascript Я использую Date.toLocaleDateString для форматирования моих дат в локали пользователя. Хотя теоретически это должно работать, это не так.Javascript users неправильный язык с датой форматирования

Я нахожусь в Великобритании. Мой компьютер настроен на Великобританию, а мой язык по умолчанию установлен в en/gb как в системных настройках, так и в настройках содержимого браузера. Тем не менее, Firefox всегда отображает даты в формате США. Есть ли какой-то трюк, которого я пропускаю?

Полный код для форматирования заключается в следующем:

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

В Великобритании для сегодняшнего дня я бы ожидал увидеть 05/02/2014, но я вижу 02/05/2014, который является американской версией этого.

+0

Я использую _Chrome_, моя машина область _Windows_ установлен в _UK/Англия/London_, 'toLocaleDateString' дает мне даты в стиле США. Я думаю, что это потому, что мы говорим _English_, поэтому просто загрузите версию браузера по умолчанию _en-US_. Я обычно пишу даты на международном уровне, что безошибочно, например, '2014-02-05' на сегодня. –

+0

Что делает '(новая дата()). ToLocaleDateString()' give? – JayInNyc

ответ

2

Быстрый взгляд на замечательную документацию MDN говорит мне, что вам нужен параметр locale, иначе результат зависит от браузера. 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" 

Для более пользовательских форматов даты я использую библиотеку moment.js. http://momentjs.com/

+1

Это побеждает цель. Я не знаю, что такое локаль. Я хочу, чтобы он автоматически соответствовал локали пользователя. –

+0

Вы сказали, что ваш компьютер - это Великобритания/ГБ, но ваши браузеры, вероятно, нет. Также возможно, что JavaScripts не имеет возможности получить локализацию дальше, чем язык, как предлагает этот пост. http://stackoverflow.com/questions/673905/best-way-to-determine-users-locale-within-browser –

0

Используйте это, чтобы передать языковой стандарт.

var locale = window.navigator.userLanguage || window.navigator.language; 
alert(date.toLocaleString(locale)); 
Смежные вопросы