我有下一個問題。我有幾個PHP系統運行在不同的Windows機器上。這些系統密集使用當前時間。在Windows下的PHP,如何獲取忽略時區的當前系統時間?
現在,我配置了php.ini並將其分配給了特定的時區。 Windows也被配置爲相同的時區,並且一切都按預期工作。
但是,在我的國家,國家決定改變夏令時。所以,有時候,管理員改變了Windows時區,並保持php時區不變,從而在系統中造成不一致。其他時間,是自動更改時區的窗口。
從PHP獲取當前系統時間是否有任何方法可忽略時區?
更新:
function time_zone_fix($timeGiven = "H:i:s")
{
$shell = new COM("WScript.Shell") or die("Requires Windows Scripting Host");
$time_bias = -($shell->RegRead("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation\\ActiveTimeBias"))/60;
$timestamp_bias = 60 * 60 * $time_bias;
return gmdate($timeGiven, strtotime($timestamp_bias . " seconds"));
}
給出當前日期和時間,無論是指定的內容時區/ DSL。 但是,創建一個新的COM接口是非常有效的。
你的問題是什麼?您是否正在爲PHP安裝正確的時區數據,並且您是否保持這些數據是最新的?你說什麼國家?而你正在尋找的「時區」可能是「UTC」。您可以使用ini設置在PHP中指定。 – hakre
問題是它不是一臺服務器,而是幾臺配置不同的服務器。我可以把「正確的」時區放在php.ini中,但由於夏令時會失敗。某些機器會自動更改夏令時,而其他機器會更改該區域來完成此操作。時區介於-4GMT和-3GMT之間(有些情況下,它與-5GMT一起工作)。有些機器會自動更改夏令時,而其他管理員則會手動更改GMT。 – magallanes
只需參考UTC。管理員不能更改UTC時間,這是固定時間點。時區和夏令時只是描述我們在時鐘上查看的內容。 UTC是全球協調時間,所以總是一樣的(至少對我們全球人類來說))。 – hakre