我使用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') . "')" ;
答案 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个月的时候住在这里。