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でお問い合わせ等のform構築時にCSRF対策を行う方法
他社が制作されたお問い合わせフォームを改修する案件があった。ソースコードを拝見し ...
-
-
MySQLで使用するインデックスを指定する
ちゃんと指定してるのにインデックスが使用されていない場合、 オプティマイザに知ら ...
-
-
画像をアップロードすると複数サムネイルを生成する方法
フォームで画像をアップロードすると、予め定めておいた大中小のサイズでサムネイル画 ...
-
-
PHP7が2015年11月にリリースされるらしい
PHP7で変わること ——言語仕様とエンジンの改善ポイント from Yoshi ...
-
-
PHPで配列のキーの最大値を取得する方法
配列のキーに整数値が入っていて、その中から最大値を取得したいケースがあった。調べ ...