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を使う方が良いでしょう。