1

我使用这种方法解决了这个问题:

设置 php.ini 时区 = UTC

然后使用 javascript new Date() 将其转换为客户端等效时间。

但是这种方法的一个严重缺点是,如果客户端更改了他的系统的时区甚至系统的时间,它就会改变。Javascript 使用它可以发送到服务器的操作系统时间和时区来进行计算,这些计算也存在同样的问题,即客户端可以欺骗你。同时我也看到facebook上的生日不受我们客户更改时间或时区的影响。

就我而言,我现在需要显示今天生日的解决方案。由于服务器和客户端时区的差异。生日在早上 5:30 发生变化,因为我在 php 中将 UTC 设置为时区并且我位于印度。我尝试并指出了这种方法中的问题。

请提出一个没有上述错误的解决方案。

4

2 回答 2

3

尝试这样的事情......

不要发送生日的绝对时间,而是发送相对于现在的时间

换句话说,不要让您的服务器说“生日是 5 月 18 日 12:00”。相反,让它说“生日是从现在开始的 80 小时 20 分钟”。

这样,客户认为现在是什么时间并不重要。只要他们的时钟以正常速度滴答作响,他们就会看到生日是“今天”或“两小时后”或其他。

通过网络发送时差会丢失一点精度,但应该在一秒左右或更少,没什么大不了的。

于 2012-05-15T19:25:49.787 回答
0

许多网站在用户的个人资料中都有一个“时区”字段。这很简单,但它有效。

我相信facebook要么有,要么根据用户的位置工作。

于 2012-05-15T19:08:49.257 回答