2011-11-23 79 views
0

我有centos服務器,我將時間換成紐約時間cmd。 另外我在php.ini中更改「date.timezone =」America/New_York「」 當我在命令shell中輸入命令日期時。我在紐約得到真正的時間。 但是,當我做爲什麼日期php和日期unix不匹配?

回聲日期(「Y-m-d H:我:S」);

時間不對! 我總是比紐約時間減少6個小時。 請幫忙? 我嘗試過使用date_default_timezone_set('America/New_York');在代碼中沒有幫助。 等待迴應。 謝謝! Koren或

+1

所以程序員可以有工作 – CheeseConQueso

回答

0

您可以在您的應用程序中初始化時區。當你這樣做會發生什麼?

date_default_timezone_set('America/New_York'); 
echo date("Y-m-d H:i:s"); 
+0

我得到:2011-11-23 04:44:09當真正的時間是2011-11-23 10:44:09 – user692601

+0

然後它必須是服務器時間/時區配置錯誤。 – Shomz

0

我在php.ini中的「date.timezone =‘美國/紐約’,」

外觀改變,這是人們非常常見的失誤誰不熟悉的正式邏輯。
讓我用一個小例子向你展示:

假設你只是把一些錢放進你的口袋裏。
我遇到並問你是否有錢在你的口袋裏。 你說「是」。

但是你不能肯定的說! 你可以肯定地告訴你只有你那裏。 但口袋裏可能有一個洞,或者有些小偷已經選擇了它,或者你只是困惑了口袋。 因此,你必須先檢查它,並在稍後回答。

雖然它在現實世界中微不足道,但在編程這樣的行爲變得至關重要! 你可以改變任何設置,但你必須驗證,如果你的行爲有任何影響
可能有一個Apache重新加載問題,或錯誤的ini.file或一些運行時設置覆蓋它。

TL:博士
務必確認您的設定,變量的數據 - 如果它真的包含預期值!
不要依賴你改變它的地方。

+0

我確實驗證過。我重新啓動Apache和httpd。沒有效果。 – user692601

-1

我只是猜測在這裏,但你重新啓動你的Apache服務器?

+0

確定我已重新啓動它。 – user692601

0

這聽起來像是一個問題,因爲沒有在您的機器上正確設置時區。

首先,要驗證PHP是否使用了正確的時區,請嘗試以下操作以查看。

echo date("Y-m-d H:i:s e"); 

如果您在腳本中正確設置了它,應該給你「美國/紐約」。

如果是這樣,我會嘗試討論here程序來更改您的系統上的時間,看看是否有效。

+0

工作,但!當實際時間爲「Wed Nov 23 16:49:53 CET 2011」時,該小時已更改爲「Wed Nov 23 10:49:03 EST 2011」 – user692601

+0

@ user692601我相信您現在需要再次設置系統時間你已經改變了時區。你可以用「date」命令來做到這一點。將它設置爲您選擇的任何時區的正確時間。 – Bryan

+0

@ user692601這整個問題似乎源於使用CET時區(相對於紐約時間+6小時)。您顯示的實時*是*正確的時間,但不是所示的CET時區。您需要確保您的時區設置正確,並且您的系統時間是該區域的正確時間。 – Bryan

1

我重新改變的時間紐約時間由日期CMD

日期命令不提供改變時區的裝置。您可能將其設置爲紐約時間的時間,但無論您已經設置了哪個時區,所以最後服務器的時間爲六個小時(奇數,如果是UTC,則應該是五個時間)。

設置TZ環境變量export TZ=America/New_York之前用date命令設置時間。服務器時間不正確可能導致嚴重問題。