一尘不染

使用JavaScript或PHP自动检测用户的当前本地时间

php

我经常需要显示基于用户 实际 本地时间或受其影响的信息,该时间在各个时区不同。是否有获取用户当前时间和/或时区的可靠方法?

关键的问题:

  • 服务器端代码基于网站主机或用户的ISP
  • 客户端代码基于用户的系统时钟,太容易操作

关键问题:

  • 是否需要查明用户的地理位置?
  • ISP时间可以成为准确的指南吗?
  • 用户的操作系统时钟可以改变还是可以被用户修改?

例子:

倒数:

只需1小时3分56秒!

问题:根据时间而定;用户的操作系统时钟,主机服务器时间(正负偏移),ISP系统时间。如果所有时区的时钟都在同一时间结束,这很容易,但是如果倒数到用户本地时区的午夜之类的时间,则比较麻烦。

编辑日志

物品发布于3:03 pm(10秒前)

问题:无论用户如何,都会计算“ 10秒”,时间会进行调整以匹配用户的时区。

营业时间:

这家餐厅现在营业至午夜(AEST)。

问题:可以通过从服务器端偏移来计算诸如午夜的时间,但是使用psudo时间(如现在),则2小时取决于用户的时间。

PHP: 使用time()输出服务器时间。可以根据用户的时区进行偏移。

JavaScript: 使用Date()输出用户的计算机时钟时间,该时间太容易操纵。


阅读 410

收藏
2020-05-29

共1个答案

一尘不染

简而言之,没有。

我建议使用服务器端时间,并让用户选择自己的时区。

您可能可以根据用户IP地址周围的启发式方法为用户计算默认时区,但这容易出错。

您应该能够通过javascript / Ajax提取客户端时区信息,但是与时间本身一样,这也容易出错。

我的建议 :让用户根据您期望的用户所在位置来选择合理的默认时区。

2020-05-29