我不知道是否有办法在php中获取用户的时区,然后根据查看者的时区显示时间。我知道它可以在JavaScript中完成,但我想在PHP中的解决方案。我搜索了很多,但无法找到一个方法来获得这项工作。PHP:根据用户的时区显示时间
所以基本上假设时间是格林尼治标准时间+8时30分。它在印度时区我想要如果用户在纽约观看这个,那么它应该是21:30。
我不知道是否有办法在php中获取用户的时区,然后根据查看者的时区显示时间。我知道它可以在JavaScript中完成,但我想在PHP中的解决方案。我搜索了很多,但无法找到一个方法来获得这项工作。PHP:根据用户的时区显示时间
所以基本上假设时间是格林尼治标准时间+8时30分。它在印度时区我想要如果用户在纽约观看这个,那么它应该是21:30。
如果您在注册时添加了用户时区,或者您知道用户时区,那么您可以试试这个.. 。
$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或数据库中。
你的代码在哪里“获取用户的时区”? – 2013-03-01 02:15:58
这是如此的静态和无用的,你必须得到用户的信息并设置他们的时区 – Sam 2013-03-01 02:21:28
这是静态的演示目的。当然,你不会把你的用户写入数组中。 – 2013-09-20 21:37:13
如果他们的API在其数据库中没有用户的IP,该怎么办? JS会**总是**返回用户的时区。 PHP不能。此外,这样做并不可靠,因为像iPredator等VPN。 – 2013-03-01 02:10:49
在这种情况下,您可以尝试使用通用时区,如$ _SERVER ['HTTP_ACCEPT_LANGUAGE'] – Sam 2013-03-01 02:13:02
为什么在使用用户的实际时间时使用通用时区时区,由JS提供? – 2013-03-01 02:14:12
您可以通过他们的IP有许多可用的地理位置数据库得到用户的时区,如IPInfoDB
http://ipinfodb.com/ip_location_api.php
您需要注册一个免费的API密钥,但他们也为您提供一个工作示例(以上)
[你有什么尝试?](http://www.whathaveyoutried.com/)请参阅[问问建议](http://stackoverflow.com/questions/ask-advice)。 – 2013-03-01 02:02:42
我已经使用js完成了它,但想知道它是否可以在php中实现。 – 2013-03-01 02:10:52