我正在开发一个网站应用程序的聊天信使。对于我的概念,我避免使用时区。
当用户发布消息时,我使用php获取当前服务器的日期/时间并将其保存到数据库中。
要显示所有消息给用户的时间,我只需要找出服务器时间和用户系统时间之间的差异。让我们说不同的是3个小时,我只需要使用mysql从数据库中检索记录的服务器时间,然后用3添加它,例如:$ message-time-display = $ server-time-of-message-posted + $ different。< / p>
对于此解决方案,尽管用户的计算机时间可能不正确,但它不会影响保存在我的数据库中的时间记录。当用户更正计算机的时间时,它将显示正确的时间。这个解决方案是否可靠?如果是这样,为什么没有人这样做?为什么这么多人使用GMT或时区?也许我想念一些重要的问题?
答案 0 :(得分:0)
一个快速解决方法是不显示确切的时间,而是显示经过的时间。例如:2分钟前
然后......
由于您知道经过的时间,您可以从用户的当前时间中减去该时间。 您可以使用javascript获取用户当前时间。
var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
答案 1 :(得分:0)
如果您正在编写一个只能在一台服务器上运行的应用程序,那么可以将时间存储为本地服务器时间。如果您的应用程序将部署在全球许多地方,那么将所有时间存储为UTC会更有意义。
在我看来,用户提供的时间应该在存储之前从用户的时区转换为UTC(或服务器的时区,如果它是您的个人应用),并且在显示时应该转换回用户的时区。
所以在你的情况下,它应该是这样的:
如果您正在显示时间戳,则应如下所示:
答案 2 :(得分:0)
只要用户正确设置了时间,您的解决方案就可以正常工作。这实际上是唯一的问题。为什么你认为没有人这样做?我猜他们中的大多数都做了,只有懒惰的人依赖于GMT / EST时间。
提示:我看到了跟踪代码中发送的用户时间,例如Google的分析javascript,可能用于计算您正在采取的差异;)