[PHP] 日時の計算がうまく合わないときのチェック項目

こんにちは。

PHPでdate関数やstrtotime関数を使用していて、
「あれ?日時計算がうまくできない・・・」
というときはありませんか?

そんなときのチェック項目を用意しました。
日時計算がうまくできないときは確認してみてください。

日時計算がうまくできないときのチェック項目

date()関数のフォーマットの間違い

時間を出力したいときに、
「時間だから、hhmmssかな?ってことは、date(“H:m:s”)かな?」
とか、適当にやると値は出力されるものの、思っているものは出力されません。

日時のフォーマットは基本的に以下の通りです。

出力結果フォーマット
年月日2019-01-01date(“Y-m-d”)
時間01:02:03date(“H:i:s”)

タイムゾーンの間違い

出力したい時間より、7時間くらいズレてる場合、タイムゾーンが間違っている可能性があります。
また、テスト環境は合ってるのに、本番環境だけ設定し忘れてることとか、あるかもしれません。

タイムゾーンの確認方法

以下の方法で確認できます。どの方法でも構いません。

  • date関数でタイムゾーンを出力する
  • php.ini内のタイムゾーン設定を確認する

date関数でタイムゾーンを確認する

以下のコードを実行してください。

出力結果コード
Asia/Tokyoprint date(“e”);

出力結果がその国に合っていれば大丈夫です。

php.ini内のタイムゾーン設定を確認する

php.iniファイル内のタイムゾーンの設定が以下のようになっていれば大丈夫です。

date.timezone=Asia/Tokyo

日付計算方法が間違っている

日付の計算には、DateTimeクラスを使用したほうが良いです。

普通に計算しようとしてしまうと、タイムスタンプ同士で計算してしまいます。

日付計算用のものを使いましょう。