1

根据这个计算器,这个日期应该是 Mon Apr 01 2013 13:11:57 GMT+0200。但相反,它是服务器时间:2013-04-01 07:11:57。我知道这是一个时区问题(服务器在-4),但是有没有办法让这个时区独立,或者我必须从数据库中查询用户的时区?

$date = 1364814717;
$date = date('Y-m-d H:i:s', $date);
4

3 回答 3

0

您可以像这样更改默认时区:

date_default_timezone_set('UTC');

如果您需要为每个用户设置不同的数字,您始终可以发送未转换的数字并使用 javascript(请参阅 getTimezoneOffset),但让用户选择可能会更好(他们的计算机可能不知道它到底在哪里!)

于 2013-04-01T11:36:27.427 回答
0

我希望这就是你要找的。

   var myDate = new Date();
   document.write(myDate.getTimezoneOffset());
于 2013-04-01T11:47:44.800 回答
0

您将需要询问用户在哪里并将其存储在数据库中的配置文件中。你实际上不能依赖任何东西。因为用户可以在代理后面,看起来就像在上海,但实际上在墨尔本。

例如,用户说它在GMT +1. 您将选项列表放在用户的配置文件中,当用户保存它时,它将被写入名为 (for example) 的数据库行timezone

尝试使用较新的DateTime样式(来自 ID 7 的用户的示例);

PHP

$mysqli = new mysqli("localhost", "my_user", "my_password", "database_name");

if ($result = $mysqli->query("SELECT timezone FROM users where user_id = 7")) {
    $prefix = '';

    if ($result[0]->timezone >= 0) {
        $prefix = '+';
    }

    $date = new DateTime('NOW GMT'.$prefix.$result[0]->timezone);

    echo '<pre>';
    print_r($date);
    echo '</pre>';
}
else {
    echo 'Query failed';
}

这里发生的是您只保存 GMT 偏移量(或使用您想要的任何时间设置)并根据用户的偏好返回当前时间。

输出

DateTime Object (
    [date] => 2013-04-01 13:50:08
    [timezone_type] => 1
    [timezone] => +01:00
)

别忘了看看夏天;)

祝你好运!

于 2013-04-01T11:53:43.507 回答