我的托管公司设置默认的时区,我php.ini到America/Chicago。我通过检查phpinfo()和我PHP代码呼应date_default_timezone_get()确认的时区。

不过,我测试更改时区,我PHP代码,但没有运气。

首先,我测试:

echo (new DateTime())->getTimestamp();
echo '<br>';
date_default_timezone_set('UTC');
echo (new DateTime())->getTimestamp();

而且,这两个遥相呼应的时间戳是相同的。

然后,我测试:

echo (new DateTime())->getTimestamp();
echo '<br>';
$now = new DateTime();
$now->setTimezone(new DateTimeZone('UTC'));
echo $now->getTimestamp();

而且,这两个遥相呼应的时间戳仍然是相同的。

分析解答

getTimestamp返回UNIX大纪元时间戳。 UNIX时间戳总是在世界上同所有。时区仅影响人类可读的时间,例如当你做$now->format('H:i:s')

另请参阅https://stackoverflow.com/a/4812178/476更多的解释。