2009-09-23 86 views
7

在PHP中,如何獲取UTC的當前時間,而無需知道我的託管服務提供商在哪裏?如何通過strtotime準確獲取當前UTC時間?

例如,我試過如下:

time() + strtotime('January 1, 2000')-strtotime('January 1, 2000 UTC') 

,發現它報告的時刻,是超前的實際UTC時間一小時。我在兩個不同的時區在兩個不同的託管服務提供商上嘗試了這一結果,結果相同。

是否有一個可靠的(並希望更清潔)的方式來準確獲得UTC時間?

我只限於PHP 4.4.9所以我不能使用新的時區東西添加到PHP5。

謝謝,提前。

+0

只是爲了檢查,都是在同一時區的託管服務提供商,你是誰?您可以嘗試檢查日期(「T」)的輸出以查看。 – Tom 2009-09-23 04:33:20

+1

@Tom:如果OP可以假設他的提供者位於特定區域,那麼這將起作用。日期(「T」)的問題是例如「EST」可能由北美的EST或澳大利亞的EST組成。 – MitMaro 2009-09-23 04:46:31

+0

我只是在尋找信息。看到我的答案下面的解決方案,似乎在所有情況下工作。你關於時區abrev的觀點。因爲我所有的服務器都在美國,所以我從來沒有處理過這個問題。 – Tom 2009-09-23 04:49:49

回答

8

這似乎適用於我。當然,你還需要測試它在PHP 4,因爲我所有的服務器都具有PHP 5,但手動聲明本應在PHP 4的工作

$t = time(); 
$x = $t+date("Z",$t); 
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $x); 
各地

第一次,我忘了日期可能在調用time()和date()之間進行更改。

+0

使用'date(「T」)'好得多。值得一個+1。 – MitMaro 2009-09-23 04:59:39

+0

謝謝,我給了你一個+1的評論。 – Tom 2009-09-23 05:03:52

+0

謝謝,它的工作原理。 :) – Dave 2009-09-24 05:35:51

14
$time = new DateTime('now', new DateTimeZone('UTC')); 
echo $time->format('F j, Y H:i:s'); 
+0

感謝您的回答。雖然這不適用於PHP 4.4.9,但它在其他PHP 5.2上工作正常。 – Dave 2009-09-24 05:48:25

+0

對不起,顯然當我閱讀你的問題時,我的閱讀理解就關閉了。很高興有幫助。 – GZipp 2009-09-24 13:41:29

+2

,但對其他人也很有價值 – shealtiel 2011-08-30 23:47:40

0
$utcTtime = gmmktime(); 
$unixTimestamp = time(); 

gmmktime:獲取Unix時間戳爲GMT日期

0

請問這工作的PHP 4.4.9?

echo gmdate('Y-m-d H:i:s', time()); 

,或者如果你想爲一個特定的日期:

$time = strtotime('January 1, 2000 UTC'); 
if($time){ 
    echo gmdate('Y-m-d H:i:s', $time); 
} 
相關問題