WordPressのなかではphpのdate()関数がおかしな値を返す?
February 15, 2010 – 6:31 pmこのブログ、WordPressのオリジナル版を使っている。昨日、遅ればせながら最新版2.9.1にバージョンアップをすると、WordPressのなかでphpのdate()関数を使うと、日本時間を返すはずのところ、UTC標準時を返すようになっていた。私のミスかWordPressのチョンボか分からないが、困ったことだ。
date()関数の振る舞い: 論より証拠、 このポスト上でphpのdate()関数を動作させてみよう。以下は、date()関数で日本時間を出力させる実に簡単なphpスクリプト:
<?php $time = date('Y-m-d H:i:s'); echo "Test for date() : "; echo $time; ?>
これを実行・出力すると以下のようになる:
因みに、我がブログでは、ポスト上でphpスクリプトを動作させるためのプラグインrunPHPを使用している(runPHPを使ったいきさつはここ)。
我がブログでは、自前のアクセス解析用ツールを使って、このブログへのアクセスログをとっている。アクセスログを採る際には、当然のことながら、アクセスした時間を記録するわけであるが、この時間がやはり日本時間ではなく、UTCになってしまっている。
php のManualでは関数dateは、次のように定義されている:
date
(PHP4, PHP5)
Date — ローカルの日付/時刻を書式化する
説明
string date( string $format[, int $timestamp ])
指定された引数timestampを、与えられたフォーマット文字列によりフォーマットし、日付文字列を返します。・・・・
この記述からdate関数を冒頭で示したかたちで用いると、日本のローカルタイムで時間が返されるはずである(php.iniでロケールをAsia/Tokyo)。ご覧になるように(少なくともこの記事を書いている時点では)、表示されている時間はUTCで9時間ほど遅い時間が表示されている。
WordPressを離れて、冒頭のphpスクリプトを実行すると、当然のことながらManualの記述どおり、日本時間で現在の時間が出力される。
WordPressがphpと干渉する場面があるのかな・・・?? それとも、WordPressの日本語版では、このあたりきちんとしているのかな?
私のカン違いでないとすると、結構、厄介なはなしになってしまう。
3 Responses to “WordPressのなかではphpのdate()関数がおかしな値を返す?”
はじめまして。
自分も、同じような現象に遭遇していましたが、date関数のコール前に、明示的に設定することで、回避できました。
date_default_timezone_set(‘Asia/Tokyo’);
echo date(‘Y-m-d H:i:s T’);
php.iniには定義してあるんですけれどね・・・。
WordPress側での問題でしょうか・・・。
By DAHLIA on Mar 17, 2010
WordPressのなかでphp.iniで設定したロケールを上書きするかたちにしていると思います。
WordPressのなかでなんらかの日時の処理をやりやすくするために、UTCに統一したと思います。あまりいいやりかたではないと思います。
日本語版ではどうなっているのでしょう。
By yama on Mar 18, 2010