2

我正在使用 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') . "')" ;
4

3 回答 3

6

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

一旦你决定了一个真实的时区

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 hours”添加到任何时间戳:

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');
于 2013-06-09T07:56:18.903 回答
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 的偏移量,但我敢肯定您一年中只有 6 个月居住在 UTC+3:00。

于 2013-06-09T00:08:12.310 回答
0

以下是对我有用的。

您可以使用时区偏移量( date("Z") )来处理服务器上的时区

   $timestamp = time()+date("Z");
echo gmdate("Y/m/d H:i:s",$timestamp);
于 2021-08-12T20:54:44.620 回答