2011-03-29 73 views
5

我们有一个简单的函数,它可以在Mac浏览器以外的每个浏览器中正常工作(在Mac上用于Chrome,用于PC上的Safari )Mac上的Javascript(Safari)toLocaleTimeString()古怪

例如,

new Date().toLocaleTimeString() 

我们希望这个给格式化这样的时刻:

11点59分25秒

然而,在Mac上的Safari,我们得到这个

11点59分25秒GMT + 01:00

我们做这些时间为一小时取出(其加入小时任何计算计算上)

例如 11:59:25 - 11:59:25 = 01:00:00(应该是00:00:00)

任何想法?

为什么它将时区添加到字符串?这使我们对我们的数据库有点问题

为什么它会增加一小时的刺痛?

为什么只是在那一个血腥的浏览器!

谢谢你的时间。

+0

尽管这是一个老问题,我非常有兴趣在回答中也是如此。 – KonstantinK 2012-09-19 20:13:58

回答

3

toLocaleTimeString方法在格式化日期时依赖于底层操作系统。它使用脚本运行的操作系统的格式约定将日期转换为字符串。例如,在美国,该月份在日期(04/15/98)之前出现,而在德国,日期在月份(15.04.98)之前出现。

诸如getHours,getMinutes和getSeconds之类的方法比toLocaleTimeString提供更一致的结果。当意图向用户显示使用用户选择的区域格式格式化的字符串时,请使用toLocaleTimeString。 请注意,根据操作系统和用户设置的不同,此方法的性质会有所不同。

来源:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString

0

在OS X中,时间格式,可以通过精细Apple菜单>系统偏好设置>语言&地区>高级>时间调整。 toLocaleTimeString()使用的格式是长格式。您可以根据需要调整格式,但请记住,此更改将在系统范围内有效。

来源:Apple Support - Customize Formats