ACF (Advanced Custom Field) で作成したカスタム日付を使ってあれこれ計算していているうちに、9時間ズレてしまうことに気づいたので結果的に直った方法をメモします。
サイトは日本国内向けで、タイムゾーンは東京(UTC+9)の想定です。
現象としては、午前9時まではまだ前日の日付になってしまうようでした。
そのため朝チェックしないと気づけませんでした 😫
やったこと
シンプルに DateTime オブジェクトを作成する際にタイムゾーンオプションを渡すだけです。
$timezone = wp_timezone(); // WordPress 管理画面で設定しているタイムゾーンを取得
$today = new DateTime('now', $timezone); // 現在の日付でオブジェクトを取得
$date_object = DateTime::createFromFormat('Y-m-d', '2025-04-01', $timezone); // Y-m-d 形式の日付文字列からオブジェクトを生成
また、 date_default_timezone_set
は古い方法で、逆に時間がズレる原因になるので使用していたら削除 OR コメントアウトします
// 使わない!
// date_default_timezone_set('Asia/Tokyo');
以上です
Published on 2025.04.01
Written by ひろと