[PHP] 日時の計算がうまく合わないときのチェック項目
こんにちは。
PHPでdate関数やstrtotime関数を使用していて、
「あれ?日時計算がうまくできない・・・」
というときはありませんか?
そんなときのチェック項目を用意しました。
日時計算がうまくできないときは確認してみてください。
日時計算がうまくできないときのチェック項目
date()関数のフォーマットの間違い
時間を出力したいときに、
「時間だから、hhmmssかな?ってことは、date(“H:m:s”)かな?」
とか、適当にやると値は出力されるものの、思っているものは出力されません。
日時のフォーマットは基本的に以下の通りです。
出力結果 | フォーマット | |
---|---|---|
年月日 | 2019-01-01 | date(“Y-m-d”) |
時間 | 01:02:03 | date(“H:i:s”) |
タイムゾーンの間違い
出力したい時間より、7時間くらいズレてる場合、タイムゾーンが間違っている可能性があります。
また、テスト環境は合ってるのに、本番環境だけ設定し忘れてることとか、あるかもしれません。
タイムゾーンの確認方法
以下の方法で確認できます。どの方法でも構いません。
- date関数でタイムゾーンを出力する
- php.ini内のタイムゾーン設定を確認する
date関数でタイムゾーンを確認する
以下のコードを実行してください。
出力結果 | コード |
---|---|
Asia/Tokyo | print date(“e”); |
出力結果がその国に合っていれば大丈夫です。
php.ini内のタイムゾーン設定を確認する
php.iniファイル内のタイムゾーンの設定が以下のようになっていれば大丈夫です。
date.timezone=Asia/Tokyo
日付計算方法が間違っている
日付の計算には、DateTimeクラスを使用したほうが良いです。
普通に計算しようとしてしまうと、タイムスタンプ同士で計算してしまいます。
日付計算用のものを使いましょう。