2011-07-18 75 views
8

我不明白爲什麼gmdate()date()恢復相同的值,如果我的服務器未配置爲在格林威治標準時間。瞭解gmtime返回值

這是爲什麼?

echo time();     // 1311011114 
echo date("U");    // 1311011114 
echo gmdate("U");   // 1311011114 


echo date("j-m-y H:m:s"); // 18-07-11 12:07:14 
echo date("e");    // America/Chicago 
echo date("O");    // -0500 
echo date("T");    // CDT 

UPDATE
我如何獲得當前時間格林威治?用日期(「O」)計算?有其他方法嗎?

+0

見鏈接我加入到我的職位爲您更新 – Neal

+0

這對我來說很有意義的anwser是:'時間()總是相同的** **到處' –

回答

5

因爲時間永遠不會改變 - 它始終是自紀元(GMT)以來的秒數。

時間總是一樣的。這只是你的時區不同而這就是顯示日期的不同。

您可以更改您的時區,以便在不同區域查看時間。

所有日期/時間功能

2

所以在很久以前,人們需要一種方法來確定跨越,這是穿制服的多個計算系統時間,請參閱here。互聯網時代之前的智者長老計算機協會理事會(簡稱CSCWE)就是這樣決定的。無記名投票決定了任意的起點將是1970年,預示着更高的計算時代。所以從那一刻開始,數十年來的無休止的行進開始了,以穩定的秒數跳動計算革命的新時代。

從這個任意定義的開始,所有的計算時間可以通過針對這個不斷增加的秒數運行數學魔術並且然後考慮時間區域來確定。

+0

我知道這一切。我已經更新了這個問題。我不明白爲什麼gmdate()存在。似乎是date的別名() –

+0

@LuisSiquot:http://php.net/manual/en/function.gmdate.php它總是會返回gmtime,而'date()'只會返回當前時區設置 – Neal

+0

_date ()只會返回當前時區設置_「U」修飾符除外? –

0

它已經回答,但如果你想獲得本地時間和UTC時間;

date_default_timezone_set('America/Chicago'); 

$format = 'Y-m-d H:i:s'; 
$time1 = time(); 
$time2 = strtotime(gmdate($format)); 

print date($format, $time1); 
print date($format, $time2); 

// 2014-07-24 17:31:23 
// 2014-07-24 22:31:23