PHP を使用して 2つの日付の差を計算する方法

Ralfh Bryan Perez 2023年1月30日
  1. strtotime() を使用して、PHP 5.3 以前のバージョンの 2つの日付の差を計算する
  2. PHP 5.3 以上の DateTime()DateInterval()
PHP を使用して 2つの日付の差を計算する方法

PHP を使用して 2つの日付の差を計算する方法はいくつかあります。この記事では、PHP バージョン 5.3 を使用する方法と、日付の違いを計算するための新しいバージョン(> 5.3)の最新かつ信頼性の高い方法について説明します。

strtotime() を使用して、PHP 5.3 以前のバージョンの 2つの日付の差を計算する

strtotime() は、2つの日付を UNIX 時間に変換し、それらから秒数を計算します。これにより、秒を使用してさまざまなメソッドを計算する方が簡単です。この関数は、日時の説明を示す英語の文字列パラメーターを受け入れます。

例:

$firstDate = "2019-01-01";
$secondDate = "2020-03-04";

$dateDifference = abs(strtotime($secondDate) - strtotime($firstDate));

$years  = floor($dateDifference / (365 * 60 * 60 * 24));
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days   = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));

echo $years." year,  ".$months." months and ".$days." days";

//output: 1 year, 2 months and 3 days

上記の例では、abs()floor()、および主に strtotime() などのいくつかの関数を使用して、2つの日付の差を取得しています。

strtotime() は日付の UNIX 秒値を取得し、abs() を使用して最初の日付の絶対値を取得します。

関数 floor() を使用して、秒を最も近い整数に切り捨てます。

年を取得するには、365 日を 60 分、60 秒、24 時間に乗算し、それを差に割ります。

月を取得するには、30 日を 60 分、60 秒、24 時間に掛け、それを年と 365 日、60 分、60 秒、24 時間を掛けた日付の差に割ります。

次に、日差を取得するには、60 分、60 秒、24 時間を掛けて、それを日付差、年の積、365 日、60 分、60 秒、24 時間と月の積、30 日の差に割ります。、60 分 60 秒 24 時間。

最後に、すべてを変数にまとめて、最終的な違いを出力します。

PHP 5.3 以上の DateTime()DateInterval()

このメソッドは、2つの日付の差を取得するオブジェクト指向のスタイルです。これは、日付の手動計算を必要としないため最も簡単であり、最新バージョンの PHP からのものであるため推奨されます。

例:

$firstDate  = new DateTime("2019-01-01");
$secondDate = new DateTime("2020-03-04");
$intvl = $firstDate->diff($secondDate);

echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day"; 
echo "<br>";
// Total amount of days
echo $intvl->days . " days ";

//output: 1 year, 2 months and 1 day
//        428 days

上記の例では、strtotime() やその他の関数や計算を使用する場合とは異なり、DateTime() および DateInterval() オブジェクトを使用する方が簡単です。

まず、new DateTime() を使用して日付を宣言します。次に、最初の日付に DateInterval() オブジェクト diff() を使用して差の整数値を取得し、2 番目の日付をパラメーターとして渡します。

最後に、を取得するには、オブジェクト y を使用します。月を取得するには m を、日を取得するには d を使用します。

関連記事 - PHP Date

関連記事 - PHP DateTime