2013-03-01 98 views
7

我不知道是否有办法在php中获取用户的时区,然后根据查看者的时区显示时间。我知道它可以在JavaScript中完成,但我想在PHP中的解决方案。我搜索了很多,但无法找到一个方法来获得这项工作。PHP:根据用户的时区显示时间

所以基本上假设时间是格林尼治标准时间+8时30分。它在印度时区我想要如果用户在纽约观看这个,那么它应该是21:30。

+0

[你有什么尝试?](http://www.whathaveyoutried.com/)请参阅[问问建议](http://stackoverflow.com/questions/ask-advice)。 – 2013-03-01 02:02:42

+0

我已经使用js完成了它,但想知道它是否可以在php中实现。 – 2013-03-01 02:10:52

回答

5

如果您在注册时添加了用户时区,或者您知道用户时区,那么您可以试试这个.. 。

$users = array(
    array(
     'username' => 'foo', 
     'timezone' => 'America/Los_Angeles' 
    ), 
    array(
     'username' => 'bar', 
     'timezone' => 'America/New_York' 
    ) 
); 

foreach ($users as $user) { 
    date_default_timezone_set($user['timezone']); 
    echo $user['username'] . ' date and time is ' . date('Y-m-d H:i:s') . '<br />'; 
} 

输出

foo time is 2013-02-28 18:13:49 
bar time is 2013-02-28 21:13:49 

您还可以在JavaScrpt Getting the client's timezone in JavaScript用户时区。发出Ajax请求并保存在PHP Session或数据库中。

+0

你的代码在哪里“获取用户的时区”? – 2013-03-01 02:15:58

+2

这是如此的静态和无用的,你必须得到用户的信息并设置他们的时区 – Sam 2013-03-01 02:21:28

+4

这是静态的演示目的。当然,你不会把你的用户写入数组中。 – 2013-09-20 21:37:13

3

您必须获得用户信息,并设置默认的时区

date_default_timezone_set()

而且ip geolocation api

+0

如果他们的API在其数据库中没有用户的IP,该怎么办? JS会**总是**返回用户的时区。 PHP不能。此外,这样做并不可靠,因为像iPredator等VPN。 – 2013-03-01 02:10:49

+0

在这种情况下,您可以尝试使用通用时区,如$ _SERVER ['HTTP_ACCEPT_LANGUAGE'] – Sam 2013-03-01 02:13:02

+0

为什么在使用用户的实际时间时使用通用时区时区,由JS提供? – 2013-03-01 02:14:12

相关问题