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

Rud*_*die 2 php time timezone datetime 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";
Run Code Online (Sandbox Code Playgroud)

对于所有4个时间戳值,它说:1325905766.

我在某处读到新的DateTime始终将UTC设置为时区,无论时区设置如何,所以我明白了,但是怎么样time()

几秒钟之前,在另一台服务器上(可能不在欧洲(ideone.com)),它返回4次:1325905723.

那是一样的!(显然有几秒差异,但时区相同.)

time()总是只返回UTC ??? 这是怎么回事??

pil*_*row 6

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

无论您是在Asia/Kabul还是Hither/Yon,自该特定时间点以来经过的秒数都是相同的.


jwo*_*der 6

是的,他们都使用UTC.具体来说,两者time()U格式都返回自1970年1月1日午夜UTC("Unix纪元")以来经过的非闰秒数.由于纪元是一个固定点,其定义与用户的时区无关,并且从那时起所有时区的秒数相同(忽略相对论效应和诸如此类),time()无论时区设置如何,都返回相同的值.

  • @Rudie:第二个不是[闰秒](http://en.wikipedia.org/wiki/Leap_second). (3认同)