我运行了这个脚本:
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???发生了什么事??
是的,它们都使用UTC。具体来说,time()
和U
格式都返回自1970年1月1日UTC午夜("Unix epoch")以来经过的非闰秒数。由于历元是一个固定点,其定义与用户的时区无关,并且此后的秒数在所有时区中都是相同的(忽略相对论效应等),因此无论时区设置如何,time()
都会返回相同的值。
time()
返回自1970年1月1日00:00:00GMT以来的秒数。
无论您是在亚洲/喀布尔还是在Hither/Yon,自该特定时间点以来经过的秒数都是相同的。