PHPにて指定した期間内の合計日数を出力する方法
PHPにて開始日と終了日をユーザが入力すると、その期間内の合計日数を出力させたいというケースがあった。ループで回してカウントしても良いんだけど、ソースコードの見た目的に良くなく効率的とも思えないので他の方法を調べてみたところDateTime::diffを使用するのが良さそう。以下に方法をメモ。
利用方法
ソースコード
<?php
$start = new Datetime('2024-01-01');
$end = new Datetime('2024-01-07');
$diff = $start->diff($end);
var_dump($diff->days); //6
$start = new Datetime('2024-01-01');
$end = new Datetime('2024-12-31');
$diff = $start->diff($end);
var_dump($diff->days); //365(2024年はうるう年)
注意点
DateTime::diffは差を返すという挙動になり、開始日は含まれないような形になる。1/1~1/7の合計日数を7日間としてカウントするには+1する必要がある点に注意。
リファレンス
関連記事
-
-
PHPのswitch文で「>」「<」等、比較演算子の使用について
switch文は指定の変数が、特定の値もしくは文字列だった場合のみに使うようなも ...
-
-
PHPの日付・時刻関連
使えそうなものをまとめてメモ。 【関数】 ----------- ■date 日 ...
-
-
PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...
-
-
PHPにて「Fatal error: Uncaught Exception ~~」エラーの対応方法
PHPにてDatetimeクラスの呼び出し時にタイムスタンプを指定しようとすると ...
-
-
PHPでルーティング用ライブラリ「AltoRouter」の利用方法
PHPフレームワークのCodeIgniterを勉強していた際にルーティング機能が ...