更改gmdate PHP函数的时区

时间:2013-06-09 00:01:30

标签: php sql

我使用gmdate PHP函数将当前日期插入数据库,但它显示GMT时间,我可以将其更改为我的时区+3吗?

这是代码

$sql = "INSERT INTO Students
VALUES ('','" . $info[$i]['firstname'] . "', '" . $info[$i]['lastname'] . "', 
        '" . $info[$i]['sex'] . "', '" . $info[$i]['major'] . "', 
        '" . $info[$i]['favorite'] . "', '" . $info[$i]['GPA'] . "',
        '". gmdate('m/d/Y g:i:s A') . "')" ;

2 个答案:

答案 0 :(得分:5)

“+ 3”不是“时区”。这是与UTC / GMT 的偏移量,可能会根据DST设置在一年中发生变化。 timezone 类似于“欧洲/柏林”或“亚洲/东京”。

确定真正的时区后

date_default_timezone_set('Europe/Berlin');
echo date('m/d/Y g:i:s A');

$date = new DateTime('now', new DateTimeZone('Europe/Berlin'));
echo $date->format('m/d/Y g:i:s A');

如果您需要使用的是“+3”,那么a)您被搞砸了b)您只需将“3小时”添加到任何时间戳:

date_default_timezone_set('UTC');

echo date('m/d/Y g:i:s A', strtotime("$offset hours"));

echo date('m/d/Y g:i:s A', time() + ($offset * 60 * 60));

$date = new DateTime;
$date->modify("$offset hours");
echo $date->format('m/d/Y g:i:s A');

答案 1 :(得分:4)

不,您应该使用date()代替。或者使用DateTime对象来更好地控制时区。

我强烈建议您存储GMT日期和时间,并在显示数据时将其计算回您自己的时区。

$datetime = new DateTime('now');
$dateTime->setTimeZone(new DateTimeZone('Europe/London')); // Change to london time.
echo $dateTime->format('m/d/Y g:i:s A');

您应该始终使用时区名称,而不是偏移。你说的是偏移+3,但我确信你只能在UTC + 3:00 6个月的时候住在这里。