web-dev-qa-db-ja.com

管理者とフロントエンドのテンプレートで正しい時間を設定できません

Test.phpという単純なphpファイル(wpインストールのルートに置かれています)を実行すると、次のようなものが含まれます。

<?php echo date('H:i:s'); ?>

正しい結果は15:30:00であり、タイムゾーンもEurope/Pragueに正しく設定されています。これはUTC + 2時間です。

しかし、私の中に同じ行を入れると結果よりも私のテンプレートのフッターやサイドバー、あるいはインデックスファイルでさえもUTC時間である13:30:00です。

WP adminの私のカスタムプラグインでも同じです。時間は2時間遅れています。

管理オプションの時間は、UTC + 2に正しく設定されています。

私が新しい投稿やページを作成した場合、時刻が15:30:00の時刻になっているのは面白いことです。わかりません。

これが起こる理由は何ですか?

最新のWPインストールがあります。 3.5.1プラグインがインストールされていないCZバージョン。

更新:

WP functiondate_i18n()を次のように使用してみました。<?php echo date_i18n('H:i:s'); ?>それは予想通りに動作しています。

ただし、<?php echo date('H:i:s'); ?>で、まだ正しく機能していません。しかし、外部のワードプレスdate()は正しく機能しています。

何故ですか?ワードプレスがdate()機能を台無しにしているのはなぜですか?

2
Derfder

WordPressはGMTを使用しています。それを回避する唯一の方法はあなた自身の目的のために使うヘッダの後に 新しいタイムゾーン を宣言することです。痛みの種類.

また、この答えを参照してください: どのようにWordPressのタイムゾーンの設定を取得するには?

2
GhostToast

ここで認められている答えは最良の方法ではありません。代わりにWordPress ' current_time() 関数を使うべきです。実行時にタイムゾーンを変更すると、WordPressがそれをUTCに正規化する(そしてそれを期待する)ので、意図しない結果になる可能性があります。

既存のUTC日付をローカルタイムゾーンに変換する必要がある場合は、 タイムスタンプをローカルタイムに変換する を参照してください。

0
John Blackbourn