この記事は 2022年8月1日 に投稿されました。
内容が古いかもしれません。ご注意ください。
※最後に更新されたのは 2022年8月1日 です。
内容が古いかもしれません。ご注意ください。
※最後に更新されたのは 2022年8月1日 です。
結論:wp_time()を使う
例えば今日を取得したいときは下記のようにする。
$today = wp_time('Y-m-d');
落とし穴(というか確認不足)
1)DateTime()で引数なしで取得した場合にUTCで取得されるのわかってない
DateTime()で本日を取得した場合は、指定しなければUTCで取得される…という基本を把握してなくてミスった。
WP一般設定のタイムゾーンが「東京」でもUTCになる。
※後述、引用内の「システムにタイムゾーンが設定されている」状態ではない
下記のサイトにあるように引数でタイムゾーン指定すれば日本の時間で出る。
でも一般設定と連動させたほうが便利だと思うのでWP内ではwp_date使ったほうが良いんじゃないかと思う
$dt = new DateTime(‘now’, new DateTimeZone(‘GMT’)); // タイムゾーンを GMT に設定
DateTime クラスで時刻を扱う – まくまくPHPノート
$dt = new DateTime(‘now’, new DateTimeZone(‘Asia/Tokyo’)); // タイムゾーンを東京 (GMT+09:00) に設定
$dt = new DateTime(‘now’); // システムにタイムゾーンが設定されているならこれでも OK
一応検証した。
ウム……
2)PHPでタイムゾーンを設定するとACFのデイトピッカーがずれる
※これはACF常用者以外関係がない項目
やっちゃいけないんだけども date_default_timezone_set()を使って上記1を解決しようとすると、ACFのデイトピッカーで取ってきた値が1日ずれてしまうという二重のエラーが発生する。
meta_queryで日付比較している場合なんかは致命的なのでタイムゾーンの再設定は避けるようにする。