不同的时区有相同的时间戳?

时间:2012-01-07 03:11:48

标签: php datetime time timezone utc

我运行了这个脚本:

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 ???发生什么事了?

2 个答案:

答案 0 :(得分:6)

time()返回自1970年1月1日00:00:00 GMT 以来的秒数。

无论您是在亚洲/喀布尔还是在Hither / Yon,自该特定时间点以来经过的秒数都是相同的。

答案 1 :(得分:6)

是的,他们都使用UTC。具体来说,time()U格式都返回自1970年1月1日UTC午夜(“Unix纪元”)以来经过的非闰秒数。由于纪元是一个固定点,其定义独立于用户的时区,并且从那时起所有时区的秒数相同(忽略相对论效应等等),time()返回相同的值,而不管时区设置。