2014-02-05 82 views
4

在javascript中我使用Date.toLocaleDateString格式化我的日期在用戶的區域設置。雖然理論上它應該工作,但事實並非如此。JavaScript用戶不正確的語言環境與日期格式

我位於英國。我的電腦設置爲英國,在系統設置和瀏覽器內容設置中,我的默認語言設置爲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/England/London_,'toLocaleDateString'爲我提供美式風格日期。我想這是因爲我們說英語_所以只需下載瀏覽器的默認版本。我通常以國際化的方式寫日期,這是明確無誤的,例如今天的「2014-02-05」。 –

+0

'(new Date())。toLocaleDateString()'給了什麼? – JayInNyc

回答

2

快速查看真棒MDN文檔告訴我你需要一個語言環境參數,否則結果取決於瀏覽器。 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

你說你的電腦語言環境是UK/GB,但你的瀏覽器可能不是。正如這篇文章所建議的那樣,JavaScript也可能讓語言環境比語言更進一步。 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)); 
相關問題