WordPress内でPHPの日付関係の関数を使った場合、返値が異なります。
dateの場合
echo date_default_timezone_get() ."<br />";
echo date("Y-m-d H:i:s") ."<br />";
を実行した場合の返値について。
通常時
現在の日時が返ります。
Asia/Tokyo
2014-07-18 22:33:43
WordPress内
9時間前の日時が返ります。
UTC
2014-07-18 13:33:44
timeの場合
echo date_default_timezone_get() ."<br />";
echo time() ."<br />";
を実行した場合の返値について。
通常時
現在のunix timeが返ります。
Asia/Tokyo
1405691831
WordPress内
現在のunix timeが返ります。
UTC
1405691831
現在のunix time を
echo date_default_timezone_get() ."<br />";
echo date("Y-m-d H:i:s",1405690933) ."<br />";
で整形した場合は、
通常時
現在の日時が返ります。
Asia/Tokyo
2014-07-18 22:42:13
WordPress内
9時間前の日時が返ります。
UTC
2014-07-18 13:42:13
date_i18nの場合
WordPress内で使える関数に、date_i18nというものがあります。
echo date_default_timezone_get() ."<br />";
echo time() ."<br />";
echo date_i18n("U") ."<br />";
をWordPress内で実行した場合、timeの返値より32400(9時間)追加された値が返ります。
UTC
1405692099
1405724499
date_i18nでunix time を整形すると、
echo date_default_timezone_get() ."<br />";
echo date_i18n("Y-m-d H:i:s",1405692099) ."<br />";
echo date_i18n("Y-m-d H:i:s",1405724499) ."<br />";
現在のunix timeならば9時間前の日時が表示され、9時間追加されたunix timeなら現在の日時が表示されます。
UTC
2014-07-18 14:01:39
2014-07-18 23:01:39
また、日時の整形の場合は、
echo date_default_timezone_get() ."<br />";
echo date_i18n("Y-m-d H:i:s") ."<br />";
echo date("Y-m-d H:i:s") ."<br />";
date_i18nが現在の日時を表示します。
UTC
2014-07-18 23:25:28
2014-07-18 14:25:28
まとめ
WordPress内で、現在のunix time から日時を整形する場合、
echo date_i18n("Y-m-d H:i:s",1405692099) ."<br />";
と
echo date("Y-m-d H:i:s",1405692099) ."<br />";
は同じ日時が返り、その日時は9時間前となります。
従って、WordPress内で混乱無くdateを使う場合、
time() の代わりにdate_i18n("U")を使い、
現在の日時の取得にはdate()の代わりにdate_i18nを使う方が良いでしょう。