2011-01-04 2 views
1

PHPスクリプトで現在のWindows時間を取得するにはどうすればよいですか?PHPでWindows時間を取得する

time()を使用すると、タイムゾーンを認識し、サーバーでDSTが実際に有効になっているかどうかが無視されるため、動作していないようです。たとえば、タイムゾーンが "America/Los_Angeles"に設定されているがDSTがチェックされていない(Windowsマシン)場合、今日の日付が9月1日であれば、ウィンドウ時間は午後1時ですが、PHP time()は午後2時を返します。

サーバーのWindows時間を取得するにはどうすればよいですか? (PHP 5.2.14を使用します)。

に "アメリカ/ Los_Angeles" 問題に

  • セットタイムゾーンを再現し、 "夏時間" のチェックボックスをオフにします。日付を2010年9月1日16:00:00 PMに設定します。
  • 出力は、アメリカ/ Los_Angeles 17時○○分00秒である

echo date_default_timezone_get(), date("H:i:s", time());

それを実行した後、次のように単純なPHPスクリプトを作成します。 DSTによる1時間の違いに注目してください。

+2

'時間()'タイムゾーンニュートラルなUNIXタイムスタンプを返します。

も@Pekkaはここに別の手動の回避策を持っていました。あなたはそれが1時間遅れているとどのように判断していますか? – deceze

+0

'date_default_timezone_get()は何と言っていますか?いくつかのコードを表示できますか? 'time()'がオフであるとあなたはどのように判断していますか? 'gmdate(" r ")'はGMTバージョンですが、 –

+0

'date(" r ")'はシステム設定とタイムゾーンに従ってローカル時刻を与えています。それ以外の場合は、['php.ini'の問題](http://de3.php.net/manual/en/datetime.configuration.php)かもしれません。 – mario

答えて

2

を解析することができます設定の信頼をいけない場合date function

のmanページを参照してください。タイムゾーンは定義された標準に従って解釈されます。 Daylight savings time not correct even after setting timezone

をしかしhttp://php.net/manual/en/function.date-default-timezone-set.php
DSTフラグを含む実際の値については、勝利のレジストリを照会するWShellを使用して、いくつかのサンプルコードがありますを参照してください。また、最後の時間に応じてこれを思いつきました。 timezone_abbreviations_list()を使用すると、正しいタイムゾーン名とDSTフラグを持つ別名を見つけることができます。これを設定します。 php date() one hour ahead of server time (DST problem)(彼は誰も教えてくれません。)

2

date("Z")はgmtからの符号付きローカルオフセットを秒単位で表示します。それを日付の出力に追加することができます。あなたはまた、shell_execを使用してdateコマンドを実行し、私はPHPは、アカウントにWindowsのDST設定をとらないと思う出力

+0

日付( "Z")は、サーバー上でDSTが有効かどうかを考慮していないので、私が必要とするものではないタイムゾーンオフセットを与えます。 – JRL

+0

shell_execの出力を解析する場合、問題はロケールが変わる可能性があり、そのためのマッチャーが複雑になる可能性があるということです。 – JRL

関連する問題