【PHP】date()とstrtotim()で日付を処理
date()の基本的な使い方
PHPで日付けを扱う時によく使用するのがdate()関数です。
format(フォーマット)を指定することで、いろいろな形式で日付を取得することも出来ます。
例えば、
date(“Y-m-d H:i:s”);
とすれば、「2023-07-10 10:01:01」といった形式で日付を取得できます。
また、
date(“Y年n月j日”);
とすれば、「2023年07月10日」といった形式で日付を返してくれます。
date(“Y”);
とすれば、「2023」と年だけを返してくれます。
これが、date()関数の基本的な使い方になります。
formatは、以下のページで説明してくれているので参考にしてください。
date()関数で1日前、1か月後などを求める方法
と、ここまででつまずく人はいないと思います。
例えば、
・1日前の日付けを取得したい
・1週間前の日付け取得したい
・1か月後の日付け取得したい
などという時はありませんか?
そんな時には、strtotime()関数と組み合わせることで、簡単に求められます。
例えば、
strtotime(“-1 day”);
で、1日前のタイムスタンプを取得することが出来ます。
あとは、そのタイムスタンプを、date()関数を使って指定の形式に変換してやるだけです。
このような感じですね。
date(“Y年m月d日”, strtotime(“-1 day”));
これで、今日が2023年07月05日だとすれば、1日前の「2023年07月04日」を返してくれます。
この“-1 day”を“+1 day”または“1 day”とすれば、逆に翌日の日付けを返してくれます。
-3 dayや+3 dayと指定すれば、3日前・3日後の日付が返ってきます。
“-1 week”、“-1 month”、“-1 year”と指定すると、それぞれ1週間前、1か月前、1年前の日付けを求められます。
特定の日付けから1か月前、1週間後などを求める方法
もう少し応用すれば、ある特定の日付けから1か月前、1週間後、3日後・・・など求めることも出来ます。
↓
ある特定の日付け(例えば「2023年07月05日」)から1ヶ月前の日付けを求めたい場合、
strtotime()関数を使って2023年07月05日をタイムスタンプに変換することで、目的の日付を取得することが出来ます。
↓
このような感じで入れ子にすることで、こちらが求めている日付け「2023年06月05日」を返してくれます。
date(“Y年m月d日”, strtotime(“-1 month”, strtotime(“2023-07-05”)));
まとめ
今回は、date()関数の基本的な使い方と、strtotime()関数を使った応用的な方法を紹介しました。
date()関数とstrtotime()関数の組み合わせを使う機会は良くあるので、覚えておくと非常に便利です。
他にも、PHPにはtime()関数やmktime()関数など、日付けを扱う関数がいくつか存在します。
また、DateTimeImmutableクラスもよく使用されます。
興味のある人は調べてみてください。
因みに、PHPには2038年問題という重大な問題があります。
それについても気が向いたらブログに書こうと思います。