【发布时间】:2012-02-04 17:24:21
【问题描述】:
我运行了这个脚本:
echo date_default_timezone_get()."\n";
echo "----\n";
date_default_timezone_set('Asia/Kabul');
echo date_default_timezone_get()."\n";
echo "----\n";
echo time()."\n";
$dt = new DateTime;
echo $dt->format('U') . "\n";
echo "----\n";
date_default_timezone_set('UTC');
echo date_default_timezone_get()."\n";
echo "----\n";
echo time()."\n";
$dt = new DateTime;
echo $dt->format('U') . "\n";
对于所有 4 个时间戳值,它显示:1325905766。
我在某处读到新的 DateTime 总是将 UTC 设置为时区,无论时区设置如何,所以我明白了,但是 time() 呢?
几秒钟前,在另一台服务器上(可能不在欧洲 (ideone.com)),它返回 4 次:1325905723。
也一样! (显然有几秒钟的差异,但时区相同。)
time() 总是并且只返回 UTC???怎么回事??
【问题讨论】:
-
不久前我也遇到了类似的问题。我试图在每个用户的基础上设置时区(通过配置文件中的设置),但通过
date()函数改变的只是最后的时区标识符。它实际上并没有改变 时间 本身。
标签: php datetime time timezone utc