phpのdateを表示したらマイナス9時間だったときの対応

Image

直近1ヶ月に投稿した記事の人気順位を表示するテンプレートを作りました という記事を書いたときに初めて気づいたのですが、phpの date で取ってくる日時がなんかおかしい。。時刻まで表示してみたら分かったのですが、

Image

↑このときの日時は 2014-07-11 09:10

と、9時間少なかったのです。ということは グリニッジ標準時 ってことなんですね。

テンプレートなどでdateを使うことはこれからもあると思うので日本時間を認識するようにしてみました。

確認:ダッシュボード

ググるとダッシュボードにタイムゾーンの設定があるという情報を得ました。

Image

設定>一般 で見ると、

Image

このようにタイムゾーンはちゃんと設定されています。たしか投稿日付などは間違っていないのでどこか部分的にだけ、タイムゾーンがグリニッジ標準時になっちゃって、9時間ずれているみたいです。

タイムゾーンの設定を子テーマのfunctions.phpに入れてみた

今回時間がずれていたのはテンプレートでの判定のときだったので、子テーマのfunctions.phpの最後の行にタイムゾーンの設定を入れてみました。

うーん、本当はダッシュボードで指定したタイムゾーンをいれたいのですが、調べる時間をはしょって(^_^;、ハードコーディングしてしまいました。

同じページを表示してみると、

Image

↑このときの日時 20140-07-11 09:19

と正しく表示されました。一度この設定をしておけば、php で dateを参照したときにずれなくて済みますね。

もっと別の方法もありました

【date関数を使うとずれるので】WordPressで日時を扱うときは、この関数が便利でした

date ではなく date_i18n を使うとずれなく取得できるようです。

なるほどWordPressはちゃんと関数を用意してくれているのですね!

私の場合は別の環境で作ったロジックをWordPressで使ったりするのでやはり共通で使えるdateの時間をタイムゾーンに合わせたいですが、WordPressでしかコーディングしない場合は date_i18n を使うことでも解決できそうです。

兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサー広告
ブログをメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

261人の購読者に加わりましょう

トップへ戻る