勉強したことのメモ

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

  関連記事

PHPで複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法
PHPで複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法

PHPで画像ファイルやテキストファイルをzip圧縮して、ダウンロードさせたかった ...

PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方

PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...

PHPでCSVファイルを出力する際に「①」や「㈱」等の環境依存文字が文字化けする対応方法
PHPでCSVファイルを出力する際に「①」や「㈱」等の環境依存文字が文字化けする対応方法

過去記事の方法を用いてPHPでCSVファイルを出力すると所々「?」という形に文字 ...

PHPで配列データをCSVとしてダウンロードさせる方法
PHPで配列データをCSVとしてダウンロードさせる方法

PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファ ...

PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法
PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法

ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...