Mac (Safari) 上的 Javascript toLocaleTimeString() 奇怪之处
我们有一个简单的函数来计算持续时间,除了 Mac 上的 Safari 之外,它在每个浏览器中都可以正常工作(在 Mac 上的 chrome 中工作,在 PC 上的 Safari 上工作)
例如,
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)
有什么想法吗?
为什么要将时区添加到字符串中?这给我们的数据库带来了一个小问题
为什么它会增加一个小时的时间?
为什么只是在那个该死的浏览器中!
感谢您抽出时间。
We have a simple function the works out a duration, it works fine in every browser apart from Safari on a Mac (works in chrome on the mac, works on Safari on the PC)
For example,
new Date().toLocaleTimeString()
We expect this to give a time formatted like this:
11:59:25
However, on the Mac Safari we get this
11:59:25 GMT+01:00
Any calculations we do on these times are one hour out (its adding the hour onto the calculation)
e.g.
11:59:25 - 11:59:25 = 01:00:00 (should be 00:00:00)
Any ideas?
Why is it adding the time zone to the string? this caused us a little issue with our database
Why is it adding an hour to the sting?
Why just in that one bloody browser!
Thanks for your time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
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
The toLocaleTimeString method relies on the underlying operating system in formatting dates. It converts the date to a string using the formatting convention of the operating system where the script is running. For example, in the United States, the month appears before the date (04/15/98), whereas in Germany the date appears before the month (15.04.98).
Methods such as getHours, getMinutes, and getSeconds give more consistent results than toLocaleTimeString. Use toLocaleTimeString when the intent is to display to the user a string formatted using the regional format chosen by the user. Be aware that this method, due to its nature, behaves differently depending on the operating system and on the user's settings.
Source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString
在 OS X 中,时间格式可以通过 Apple 菜单 > 进行微调。系统偏好设置>语言与地区>高级>时间。 toLocaleTimeString() 使用的格式是长格式。您可以根据需要调整格式,但请记住此更改将在整个系统范围内有效。
来源:Apple 支持 - 自定义格式
In OS X, time format can be fine tuned by Apple menu > System Preferences > Language & Region > Advanced > Time. The format used by toLocaleTimeString() is the Long format. You can adjust the format as desired for your needs, however keep in mind this change will be effective system wide.
Source: Apple Support - Customize Formats