我需要一种方法根据我的用户的区域设置自动格式化日期和数字对象。如何根据用户区域设置设置数字和日期的格式?
到目前为止,我一直在使用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