根据不同国家/地区的用户计算机时间在网站上显示日期/时间

时间:2011-04-08 19:50:36

标签: php mysql timezone

我正在开发一个网站应用程序的聊天信使。对于我的概念,我避免使用时区。

当用户发布消息时,我使用php获取当前服务器的日期/时间并将其保存到数据库中。

要显示所有消息给用户的时间,我只需要找出服务器时间和用户系统时间之间的差异。让我们说不同的是3个小时,我只需要使用mysql从数据库中检索记录的服务器时间,然后用3添加它,例如:$ message-time-display = $ server-time-of-message-posted + $ different。< / p>

对于此解决方案,尽管用户的计算机时间可能不正确,但它不会影响保存在我的数据库中的时间记录。当用户更正计算机的时间时,它将显示正确的时间。这个解决方案是否可靠?如果是这样,为什么没有人这样做?为什么这么多人使用GMT或时区?也许我想念一些重要的问题?

3 个答案:

答案 0 :(得分:0)

一个快速解决方法是不显示确切的时间,而是显示经过的时间。例如:2分钟前

然后......

由于您知道经过的时间,您可以从用户的当前时间中减去该时间。 您可以使用javascript获取用户当前时间。

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();

答案 1 :(得分:0)

如果您正在编写一个只能在一台服务器上运行的应用程序,那么可以将时间存储为本地服务器时间。如果您的应用程序将部署在全球许多地方,那么将所有时间存储为UTC会更有意义。

在我看来,用户提供的时间应该在存储之前从用户的时区转换为UTC(或服务器的时区,如果它是您的个人应用),并且在显示时应该转换回用户的时区。

所以在你的情况下,它应该是这样的:

  1. 用户操作 - &gt;将UTC时间存储在数据库中
  2. 其他用户操作 - &gt;将当前UTC时间与存储的UTC时间进行比较并显示差异。
  3. 如果您正在显示时间戳,则应如下所示:

    1. 用户操作 - &gt;将UTC时间存储在数据库中
    2. 用户访问权限 - &gt;检索存储的UTC时间并将其转换为用户的时区。显示。

答案 2 :(得分:0)

只要用户正确设置了时间,您的解决方案就可以正常工作。这实际上是唯一的问题。为什么你认为没有人这样做?我猜他们中的大多数都做了,只有懒惰的人依赖于GMT / EST时间。

提示:我看到了跟踪代码中发送的用户时间,例如Google的分析javascript,可能用于计算您正在采取的差异;)