如何在不依赖javascript的情况下决定用户的时区

时间:2012-05-15 19:06:00

标签: php javascript

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

设置php.ini timezone = UTC

然后使用javascript new Date()转换它以获得客户端等效时间。

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

在我的情况下,我现在需要今天显示生日的解决方案。 由于服务器和客户端时区的不同。生日在早上5:30变化,因为我在UTC中将UTC设置为时区,而我位于印度。我试着用这种方法指出了问题。

请建议一个没有上述错误的解决方案。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

在网络上发送时差会丢失一点精确度,但它应该在一秒或更短的时间内,而不是一件大事。

答案 1 :(得分:0)

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

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