根据this calculator,此日期应为2013年4月1日13:11:57 GMT + 0200。但相反,它是服务器的时间:2013-04-01 07:11:57。我知道这是一个时区问题(服务器在-4中)但有没有办法使这个时区独立或者我是否必须从数据库中查询用户的时区?
$date = 1364814717;
$date = date('Y-m-d H:i:s', $date);
答案 0 :(得分:0)
您可以像这样更改默认时区:
date_default_timezone_set('UTC');
如果您需要为每个用户创建不同的用户,您可以随时发送未转换的号码并使用javascript(请参阅getTimezoneOffset),但最好让用户选择(他们的计算机可能不知道它到底在哪里!)
答案 1 :(得分:0)
我希望这就是你要找的东西。
var myDate = new Date();
document.write(myDate.getTimezoneOffset());
答案 2 :(得分:0)
您需要询问用户的位置并将其存储在数据库中的配置文件中。你实际上不能依赖任何东西。由于用户可以支持代理,而且似乎在上海,但实际上是在墨尔本。
例如,用户说它在GMT +1
。您将选项列表放在用户的配置文件中,当用户保存它时,它将被写入一个名为(例如)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
)
别忘了查看夏季;)
祝你好运!