2011-02-16 22 views
1

隨意在這裏運行代碼:http://codepad.org/SAOaOABn爲什麼澳大利亞/布里斯班(UTC + 10)產生的時間值小於UTC?

代碼:

<?php 

$time = time(); 

echo date_default_timezone_get()."\n"; 
echo mktime(gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time))."\n"; 

date_default_timezone_set('Australia/Brisbane'); 
echo date_default_timezone_get()."\n"; 
echo mktime(gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time)); 

輸出:

UTC 
1297828288 
Australia/Brisbane 
1297792288 

我的問題是,爲什麼澳大利亞/布里斯班(UTC + 10)產生時間值小於UTC?

回答

5

你在告訴計算機你的時區是UTC + 10。然後當你說「請告訴我在布里斯班的11:00時,UTC時間」,你將得到01:00 UTC。

mktime函數使用本地時間,而gmdate使用UTC,所以你不會讓UTC回來。如果您使用date而不是gmdate,則您會得到相同的時間。

+0

Unix時間戳是自1970年1月1日(UTC)以來經過的秒數。因此,您正在更改時區,但不會更改時間,然後將其轉換爲UTC。 – Jacob 2011-02-16 04:08:18