次の問題があります。異なる 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"));
}
timezone/dsl が指定されているかどうかに関係なく、現在の日付と時刻を返します。ただし、新しい COM インターフェイスを作成することは決して効率的ではありません。