更改gmdate PHP函数的时区

sab*_*sab 2 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') . "')" ;
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 5

"+3"不是"时区".它是UTC/GMT偏移量,可能会根据DST设置全年变化.一个时区是像"欧洲/柏林"或"亚洲/东京".

一旦你确定了一个真正的时区:

date_default_timezone_set('Europe/Berlin');
echo date('m/d/Y g:i:s A');
Run Code Online (Sandbox Code Playgroud)

要么

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

如果您需要使用的是"+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');
Run Code Online (Sandbox Code Playgroud)