PHP:根据用户的时区显示时间

时间:2013-03-01 01:59:09

标签: php timezone

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

所以基本上假设时间是GMT + 0530的8:30。它在印度时区我想如果用户在纽约看到这个,那么它应该是21:30。

3 个答案:

答案 0 :(得分:6)

如果您在注册时添加了用户时区,或者您以某种方式了解用户时区,那么您可以试试这个......

$users = [
    [
        'username' => 'foo',
        'timezone' => 'America/Los_Angeles'
    ],
    [
        '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中使用Timezone。发出Ajax请求并保存在PHP会话或数据库中。

答案 1 :(得分:3)

您必须获取用户信息并设置默认时区

date_default_timezone_set()

ip geolocation api

答案 2 :(得分:1)

您可以通过将IP与许多可用的地理位置数据库(例如IPInfoDB

)交叉来获取用户时区

http://ipinfodb.com/ip_location_api.php

您需要注册一个免费的API密钥,但它们也为您提供了一个工作示例(上图)