我运行了这个脚本:
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 ???发生什么事了?
答案 0 :(得分:6)
time()
返回自1970年1月1日00:00:00 GMT 以来的秒数。
无论您是在亚洲/喀布尔还是在Hither / Yon,自该特定时间点以来经过的秒数都是相同的。
答案 1 :(得分:6)
是的,他们都使用UTC。具体来说,time()
和U
格式都返回自1970年1月1日UTC午夜(“Unix纪元”)以来经过的非闰秒数。由于纪元是一个固定点,其定义独立于用户的时区,并且从那时起所有时区的秒数相同(忽略相对论效应等等),time()
返回相同的值,而不管时区设置。