为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测用户的时区?

如何检测用户的时区?

PHP
慕雪6442864 2019-07-12 10:01:15
如何检测用户的时区?我需要知道什么时区是我的用户目前在基于他们的IP或http报头。关于这个问题,我得到了许多答案,但我无法理解这些答案。有人说用-new Date().getTimezoneOffset()/60 (从这里开始)。但这意味着什么?我有一个date_default_timezone_set("Asia/Calcutta");在我的(index.php)页面的根目录中。为此,我必须动态获取时区,并将其设置为Asia/Calcutta.
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

浏览器的时区信息不是HTTP规范的一部分,所以不能只从头获取。

如果您有位置坐标(例如来自移动设备gps),则可以找到时区。使用以下方法之一..然而,IP地址的地理定位并不是一个很好的解决方案,因为IP通常是位于另一个时区的ISP或代理服务器的IP。

您可以使用一些策略来尝试检测时区,例如使用jsTimeZoneDetect库,这是一个伟大的起点,但不完美,你不能仅仅依靠它。如果您使用的是time.js,则在矩时区中有一个内置函数,名为moment.tz.guess()做同样的事。

使用JavaScript的想法getTimezoneOffset()函数是有缺陷的,因为您没有得到一个时区-只是特定日期的一个偏移量。看见时区标记wiki标题为“时区!=偏移”的部分。

不管你如何看待它,最终你必须决定两种方法中的一种:

  • 只向UTC中的浏览器发送时间,并在浏览器上使用JavaScript将其计算机设置为任何本地时区。

我更详细地讨论这一点(从c#的角度来看)这个答案.


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 681 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信