8

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

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

4

3 回答 3

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 中使用用户时区在 JavaScript 中获取客户端的时区。发出 Ajax 请求并保存在 PHP 会话或数据库中。

于 2013-03-01T02:14:32.077 回答
3

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

date_default_timezone_set()

ip geolocation api

于 2013-03-01T02:06:34.860 回答
1

您可以通过将用户的 IP 与许多可用的地理位置数据库(例如IPInfoDB )交叉来获取用户的时区

http://ipinfodb.com/ip_location_api.php

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

于 2013-03-01T02:12:25.670 回答