cakephp DBから取得した日付を表示する際に、1日マイナス表示される

表題の件について、画面表示する際に1日マイナスされて表示されてしまう。
php.iniによる設定のタイムゾーンは「Ajia/Tokyo」となっているし、cakeの設定ファイル「app/config/app.php」は2か所とも「Ajia/Tokyo」です。

以上の事から、しっかりタイムゾーンも設定したのにも関わらず原因がわからず困っていたところ、解決した。
テーブルのカラムがdate型であることがよくなかったみたい。
解決した経緯↓
以下のように一方をdatetime型に変えて確認してみたところ…

日付は以下のようになっている。

from_dayの日付が2019-02-01

to_dayの日付が2019-02-01

デバッグでオブジェクト内を確認した内容。

from_dayの内容

to_dayの内容

from_dayの型がFrozenTimeで、to_dayの型がFrozenDateで、違いが確認できている。

timezoneもAjia/TokyoUTCと扱いが異なることがわかった。これはcakephpが親切にデータの型を自動で認識してこのような形になったようです。

この場合、timeは共に2019-02-01日付であることがわかるが、timezoneがUTCの場合、画面に表示した際、このように日付に差が生じてしまう。左がfrom_day,右がto_day。

datetimeに変更することで日付を正常に表示することが出来た。そもそもdate型だとtimezoneUTCになるんで、それはそうなんだけど、気づくのに時間かかった・・・・。

同じようにはまった人の参考になれば幸いです。


自作WEBアプリ集


管理人があまりに暇人なため、しょうもないwebアプリを作ったりしてます。見てやってください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA