Mac上的Javascript(Safari)toLocaleTimeString()奇怪

时间:2011-03-29 11:05:59

标签: javascript macos safari

我们有一个简单的功能,可以在一个持续时间内工作,除了Mac上的Safari之外,它在每个浏览器中都能正常工作(在Mac上使用chrome工作,在PC上运行Safari)

例如,

new Date().toLocaleTimeString() 

我们希望这样的时间格式如下:

  

11点59分25秒

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

  

11:59:25 GMT + 01:00

我们在这些时间进行的任何计算都是一小时(它将小时加到计算中)

e.g。 11:59:25 - 11:59:25 = 01:00:00(应该是00:00:00)

有什么想法吗?

为什么要在字符串中添加时区?这给我们的数据库带来了一点问题

为什么在刺痛中增加一小时?

为什么只是在那个血淋淋的浏览器中!

感谢您的时间。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

来源:Apple Support - Customize Formats