我用这个方法解决了这个问题:
设置 php.ini 时区 = UTC
然后使用 javascript new Date() 转换它以获得客户端等效时间。
但这种方法的一个严重缺点是,如果客户端更改其系统的时区甚至系统时间,它就会发生变化。 Javascript 使用它可以发送到服务器的操作系统时间和时区进行计算,这也存在同样的问题,即客户端可以欺骗你。同时我还看到 facebook 上的生日不受我们客户更改时间或时区的影响。
就我而言,我目前需要显示今天生日的解决方案。 由于服务器和客户端时区不同。生日在早上 5:30 更改,因为我在 php 中将 UTC 设置为时区并且我位于印度。我尝试并指出了该方法中的问题。
请提出一个没有上述错误的解决方案。
最佳答案
尝试这样的事情......
不是发送生日的绝对时间,而是发送相对于现在的时间。
换句话说,不要让服务器说“生日是 5 月 18 日 12:00”。相反,让它说“生日是从现在起 80 小时 20 分钟。”
这样,客户认为现在几点并不重要;只要他们的时钟以正常速度滴答作响,他们就会看到生日是“今天”或“两小时后”或其他什么。
通过网络发送时差会损失一点精度,但应该在一秒左右或更短,这没什么大不了的。
关于php - 如何在不依赖javascript的情况下决定用户的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10607207/