PHP PR

PHPのdate関数で日付けを扱う方法

PHPのdate関数で日付けを扱う方法
記事内に商品プロモーションを含む場合があります

【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年問題という重大な問題があります。
それについても気が向いたらブログに書こうと思います。