WordPress内でPHPのdate関数を使ったら時刻がずれた!

諸事情で(というより勉学のために)アクセス解析を自作しようと思って、WordPressに書き足す形でコードを書いたところ、date関数で取得する時刻がずれてしまうという問題にぶつかり、挫けました。

…というわけで、同じようなことをする人もいるかなぁと思うので、同じ轍を踏まないようにご注意下さい(^_^;)

やろうとしたこと

やろうとしたことは非常に単純で、header.phpの最初でrequire_onceを利用して、解析用のコードを読み込んだだけです。

読み込み先のsample.phpでは、$_SERVER系の変数を読んでテキストに書くだけです。
このときに利用しているdate関数で取得した時刻がどうもおかしなことになります。

時刻がずれる問題発生!!

上記のコードで動いたんですが、どうもおかしくて、9時間ずれるんですよ。でも、sample.phpだけ動かすと特に問題なく時刻が取得できているという怪奇現象。
そこで、調べてみたところ、WordPress内部ではTimezoneがUTC(世界標準時)になってるらしい!!
そう言われてみれば、たしかに9時間ってのはイギリスと日本の時差でしたねっていうね。

そんなわけで、TimezoneをTokyoに戻してあげる必要がありました。

Timezoneを修正する

Timezoneを修正すると言っても、WordPressの内部をいじるのは怖いので、今回作ったsample.phpの内部でだけ、Timezoneを変更するように対応するようにしています。(というか、そもそもサーバの時刻は日本時間のはずだから、むしろワードプレスくんがTimezoneを変更してるんだよね?)

おしまい

こうして無事に時刻を取得することができました!
余談ですが、この間違いに気付くまでの間に取得したログの時刻の修正がわりと過酷でしたw
きちんと動作を確認してからデプロイすべきだよね、本当は(´・ω・`)

べき論怖い!!

 

(photo credit: opopododo via photopin cc )

  • ■ システムの科学
    システム創成学科のシミュレーションコース的にはバイブル的存在であったと認識しております(笑)社会システムや人工物をどのように設計していくかについて俯瞰的に書かれているので、自分の思考のフレームができます。
PAGE TOP ↑