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の日本語版では、このあたりきちんとしているのかな?

私のカン違いでないとすると、結構、厄介なはなしになってしまう。


  1. 3 Responses to “WordPressのなかではphpのdate()関数がおかしな値を返す?”

  2. はじめまして。
    自分も、同じような現象に遭遇していましたが、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

  3. WordPressのなかでphp.iniで設定したロケールを上書きするかたちにしていると思います。

    WordPressのなかでなんらかの日時の処理をやりやすくするために、UTCに統一したと思います。あまりいいやりかたではないと思います。

    日本語版ではどうなっているのでしょう。

    By yama on Mar 18, 2010

  1. 1 Trackback(s)

  2. Feb 23, 2011: そらのうきぶくろ — 新しいカウンタ設置したは良いけど…

Post a Comment