我使用这种方法解决了这个问题:
设置php.ini timezone = UTC
然后使用javascript new Date()转换它以获得客户端等效时间。
但是这种方法的一个严重缺点是,如果客户端改变了系统的时区甚至是系统的时间,它就会发生变化。 Javascript使用它可以发送到服务器的OS时间和时区进行计算,这些计算也会遇到同样的问题,即客户端可能会欺骗你。同时我也看到facebook上的生日不受我们的客户改变时间或时区的影响。
在我的情况下,我现在需要今天显示生日的解决方案。 由于服务器和客户端时区的不同。生日在早上5:30变化,因为我在UTC中将UTC设置为时区,而我位于印度。我试着用这种方法指出了问题。
请建议一个没有上述错误的解决方案。
答案 0 :(得分:3)
尝试这样的事情......
不是发送生日的绝对时间,而是发送相对于现在的时间。
换句话说,不要让你的服务器说“生日是在5月18日12点”。相反,请说“生日是从现在开始的80小时20分钟。”
这样,客户认为它的时间并不重要;只要他们的时钟以正常速度滴答,他们就会看到生日是“今天”或“两小时”或其他什么。
在网络上发送时差会丢失一点精确度,但它应该在一秒或更短的时间内,而不是一件大事。
答案 1 :(得分:0)
许多网站在用户个人资料中都有“时区”字段。这很简单,但它确实有效。
我相信facebook要么拥有它,要么根据用户的位置工作。