【问题标题】:Is it possible to get the timezone from your visitor with php?是否可以使用 php 从访问者那里获取时区?
【发布时间】:2012-08-07 12:28:59
【问题描述】:

或者这只能用javascript(客户端)来完成吗?

【问题讨论】:

标签: php date datetime time timezone


【解决方案1】:

有两种方法可以做到这一点。最明显的方法是使用 Javascript,因为它存在于客户端世界中。另一种方法是让用户在注册您的网站时指定他们的时区,然后您可以根据 GMT 进行一些后端操作以获取他们访问的实际时间。这当然有用户可以输入错误时区的缺陷。

【讨论】:

  • "用户可以输入错误的时区" 当然可以,但他/她为什么要这样做呢?在他们的脑海中计算任何时间?
  • @feeela 如果默认选择 GMT -4,则大多数用户很有可能将 GMT -4 作为他们的时区。
  • 这是可能的,不是你的问题,而是用户的问题。默认值本身应该是 UTC。
  • 感谢大家的回复。关于注册的事情......如果他们不必注册,人们就懒得注册。没问题我会用javascript来做。我只是想确保在 php 中不可能做到这一点。
  • @tastro :您在过去 2 小时内提出的所有 3 个问题都非常相关,我已经在这里为您提供了有关如何使用 Javascript 执行此操作的解决方案:stackoverflow.com/questions/11844617/store-date-in-utc-with-php 感谢您考虑人们为你付出的努力,至少阅读了他们的答案。
【解决方案2】:

仅使用 PHP 是不可能的。但是您可以通过 JS 将 GET 参数设置为用户当前的时间戳,并将差异与服务器上生成的时间戳进行比较。这样您就可以计算服务器和客户端之间的时区差异。

【讨论】:

  • 可以使用 PHP。地理IP!
【解决方案3】:

2 个解决方案

  1. 您可以尝试使用 javascript - 并使用 ajax 发送到您的脚本,但这不是 100% 准确的。
  2. 您可以使用 GeoIP,然后匹配它以查看他的时区。

【讨论】:

  • 您的第二个选项比使用 JS 更不准确,尤其是如果您使用一些免费(免费)的数据库。
  • 我没有说它是免费的还是付费的……但它比 Javascript 更准确——因为它不依赖于浏览器/PC。
  • 您曾经使用过 GeoIP 吗?结果根本不准确。我试图解决的大多数 IP 都在几百公里之外,但有些距离很远,以至于它们位于不同的时区。此外,GeoIP 数据需要每隔几个月更新一次。我不会依赖任何东西。
  • 总有问题有答案。他可以同时使用这两种解决方案。
【解决方案4】:

这不可能只在 Javascript 中完成。 timezone 不包含在标头中。因此,它必须与PHP 之类的语言结合使用。以下是一些解决方案:

How do I get a visitor's time zone in PHP?

http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多