勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて指定した期間内の合計日数を出力する方法

  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する必要がある点に注意。

 

リファレンス

https://www.php.net/manual/ja/datetime.diff.php

 - PHP

  関連記事

地理院のジオコーディングAPIをPHPからリクエストする方法
地理院のジオコーディングAPIをPHPからリクエストする方法

以前に地理院のジオコーディングAPIをjavascriptからajaxでリクエス ...

PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法
PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法

PHPにて漢数字と普通の数字の相互変換を行いたい。例えば「123465789」⇔ ...

PHPでjpg / png画像をAVIF形式の画像に変換する方法
PHPでjpg / png画像をAVIF形式の画像に変換する方法

PHPでjpg / png画像をAVIF形式の画像に変換しサーバに保存したい。W ...

Codeigniter4で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法
Codeigniter4で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法

Codeigniter4.4.4でCSS及びJavaScriptファイルを設置し ...

PHPで日時比較時の注意
PHPで日時比較時の注意

PHPで日時を比較する際にミスがあったのでメモ。 基本形は下記。 $limit_ ...