如何检测用户的时区?

如何检测用户的时区?

我需要知道什么时区是我的用户目前在基于他们的IP或http报头。

关于这个问题,我得到了许多答案,但我无法理解这些答案。有人说用-new Date().getTimezoneOffset()/60 (从这里开始)。但这意味着什么?

我有一个date_default_timezone_set("Asia/Calcutta");在我的(index.php)页面的根目录中。为此,我必须动态获取时区,并将其设置为Asia/Calcutta.


慕娘9325324
浏览 425回答 3
3回答

波斯汪

浏览器的时区信息不是HTTP规范的一部分,所以不能只从头获取。如果您有位置坐标(例如来自移动设备gps),则可以找到时区。使用以下方法之一..然而,IP地址的地理定位并不是一个很好的解决方案,因为IP通常是位于另一个时区的ISP或代理服务器的IP。您可以使用一些策略来尝试检测时区,例如使用jsTimeZoneDetect库,这是一个伟大的起点,但不完美,你不能仅仅依靠它。如果您使用的是time.js,则在矩时区中有一个内置函数,名为moment.tz.guess()做同样的事。使用JavaScript的想法getTimezoneOffset()函数是有缺陷的,因为您没有得到一个时区-只是特定日期的一个偏移量。看见时区标记wiki标题为“时区!=偏移”的部分。不管你如何看待它,最终你必须决定两种方法中的一种:让用户告诉你他们的时区,从某种下拉列表或者基于地图的时区选择器控制.或只向UTC中的浏览器发送时间,并在浏览器上使用JavaScript将其计算机设置为任何本地时区。我更详细地讨论这一点(从c#的角度来看)这个答案.
打开App,查看更多内容
随时随地看视频慕课网APP