js Date toLocaleString

时间:2011-09-04 14:04:32

标签: javascript date

我使用3个浏览器输出此结果。

铬:

new Date().toLocaleString()
> "Sun Sep 04 2011 21:40:04 GMT+0800 (HKT)"

Safari浏览器:

new Date().toLocaleString()
> "2011年9月4日 下午09时54分51秒格林尼治标准时间+0800"

FF:

new Date().toLocaleString()
> "Sun Sep 4 21:46:03 2011"

为什么输出结果不一样? timezoom?

3 个答案:

答案 0 :(得分:2)

这取决于计算机的配置,用户的首选日期格式,显然是用户的区域设置,以及浏览器如何确定。

您应该更喜欢使用适当的日期库(例如datejs)进行格式化。

查看他们的Date.toString()format specifiers

答案 1 :(得分:1)

实际上,这是webkit中的一个错误;特别是在Chrome中,但Safari也确实受到了影响:http://code.google.com/p/chromium/issues/detail?id=3607

toLocaleString()不会转换为语言环境!

最糟糕的是,它被关闭为WontFix。怎么可能?我们应该尝试重新打开它。关于错误的结论是,当一个新的javascript globalization apis(很好地解释here)出现时。这听起来不像是我的解决方案!

在任何情况下,如果可能的话,请按照@ arnaud576875建议使用datejs,这是旧的,但仍然非常好。

答案 2 :(得分:0)

选中此link

这个例子:

var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// British English uses day-month-year order and 24-hour time without AM/PM
console.log(event.toLocaleString('en-GB', { timeZone: 'UTC' }));
// expected output: 20/12/2012, 03:00:00

// Korean uses year-month-day order and 12-hour time with AM/PM
console.log(event.toLocaleString('ko-KR', { timeZone: 'UTC' }));
// expected output: 2012. 12. 20. 오전 3:00:00