unixtimeと日本のローカル時刻では、9時間の違いがあります。
WordPressでどの関数でどの日時を取得できるかを知っておかないと、日付データの設定する時にうまくいきません。
WordPressでdate関数を使った日時の取得やunixtimeやローカル時刻について、まとめて紹介します。
WordPressで日時が重要な理由
スケジュール登録(wp_schedule_event)などを使う時は、unixtimeとローカル時刻の9時間の差を考慮する必要があります。
どの関数で何を取得できるかが重要です。
ローカル時刻を取得する方法は下記の方法があります。
ローカル時刻を取得する方法
- date関数で+9時間する
- タイムゾーンを東京にする
- date_i18nを使う
date関数でローカル時刻を取得する
WordPressで使うPHPのdate関数では、通常だとunixtimeが返ります(UTC)。
ローカル時刻(日本時間)を返したいなら、UTCに+9時間が必要です。
date('Y-m-d H:i:s', strtotime('+9hour'));
もう一つ、date_default_timezone_set関数を使って、date関数でローカル時刻を取得する方法があります。
※取得後に、タイムゾーンを戻す作業が必要です。
date_default_timezone_set( 'Asia/Tokyo' );
date('Y-m-d H:i:s');
date_default_timezone_set( 'UTC' );
WordPressの関数でローカル時刻を取得する
WordPressが提供している関数でローカル時刻を取得できます。
date_i18n('Y-m-d H:i:s');
WordPressの時刻【まとめ】
主要な関数を使った日付の確認です。
var_dump(get_the_time('Y-m-d H:i:s', 922)); //string(19) "2021-06-15 13:51:00" var_dump(get_the_time('U', 922)); //int(1623765060) var_dump(date('Y-m-d H:i:s')); //string(19) "2022-01-18 00:38:19" var_dump(date('Y-m-d H:i:s', strtotime('+9hour'))); //string(19) "2022-01-18 09:38:19" //タイムゾーンの変更 date_default_timezone_set( 'Asia/Tokyo' ); var_dump(date('Y-m-d H:i:s')); //string(19) "2022-01-18 09:38:19" var_dump(date('Y-m-d H:i:s', strtotime('-9hour'))); //string(19) "2022-01-18 00:38:19" var_dump(date('Y-m-d H:i:s', strtotime('-32400sec'))); //string(19) "2022-01-18 00:38:19" //タイムゾーンの戻し date_default_timezone_set( 'UTC' ); var_dump(date_i18n('Y-m-d H:i:s')); //string(19) "2022-01-18 09:38:19" var_dump(date_i18n('Y-m-d H:i:s', strtotime('-9hour'))); //string(19) "2022-01-17 15:38:19" var_dump(date_i18n('Y-m-d H:i:s', strtotime('-32400sec'))); //string(19) "2022-01-17 15:38:19"
date_i18nとstrtotimeに注意
上記のvar_dumpから分かる通り、date_i18n関数は、strtotimeで時間を引くとおかしくなってしまいます。
Codexには、strtotimeが使えそうなサンプルコードがありますが、-9hourみたいな書式は使えないので注意が必要です。
※date関数は正常に動きます。
wp_schedule_eventで登録する日時
wp_schedule_eventは、unixtime(UTC)で設定が必要です。
例えば、
にスケジュールを実行したいのであれば、
をunixtimeに変換して設定が必要です。