我需要一種方法根據我的用戶的區域設置自動格式化日期和數字對象。如何根據用戶區域設置設置數字和日期的格式?
到目前爲止,我一直在使用toLocaleString()
函數進行日期。對於數字,toLocaleString()
也是可用的,但正如您在我準備的jsFiddle中看到的,瀏覽器之間的結果差異很大。隨着我的Windows機器上的英語(美國)語言環境,我得到這個:
- IE9:15,000.00
- 火狐:15,000
- 鉻:15000
在Chrome中,它看起來像toLocaleString()
根本不適用於數字。除了這種方法,我也試過:
- 要使用MicrosoftAjax.js庫
localeFormat()
功能,但(通過使用「區域和語言選項」對話框中)無論在哪種語言環境,我在我的電腦設置,日期和數字仍然以美國格式格式化。 - 使用庫如Globalize。儘管它們提供格式化功能,但它們無法自動檢測用戶的區域設置。
因此,總結一下:如何自動格式化數字和日期以尊重所有主流瀏覽器(IE,Firefox,Chrome)都能正常瀏覽網頁的用戶區域設置?
在服務器端,您可以從瀏覽器發送的['Accept-Language'頭文件](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)中檢測區域設置。使用你的服務器可以根據語言環境發送JavaScript。編輯:看來你也可以從'navigator.language'中得到它,我不知道如何支持,雖然如果一些庫不能使用它。 – Esailija