phpで二つの日付が何日間離れているか調べる。
今回は関数にして二つの日付を渡し、日数を返すように作成。
※UNIXタイムスタンプは、「1970-01-01 00:00:00」からの経過秒数。
※日数に変換する際は、60(秒)×60(分)×24(時)で割ることで日数を求めている
■ 使用方法
<?php
function day_diff($date1, $date2) {
// 日付をUNIXタイムスタンプに変換
$timestamp1 = strtotime($date1);
$timestamp2 = strtotime($date2);
// 何秒離れているかを計算
$seconddiff = abs($timestamp2 - $timestamp1);
// 日数に変換
$daydiff = $seconddiff / (60 * 60 * 24);
// 戻り値
return $daydiff;
}
// 日付を関数に渡す
$day = day_diff('2012-10-10', '2012-12-24');
echo $day;
?>
■ 出力結果
75
2つの日付の差を計算してみたのですが、2038年以降の値が負になってしまうのですが、これを解決する方法はないでしょうか。ご存じでしたら教えてください。
コメントありがとうございます。
返信が遅くなってしまいました。
日付関数などでは2038年問題があり、2038年頃から誤動作する可能性があります。
解決する方法として、date_create関数を使用すれば正常に動作することを確認しました。
http://jp.php.net/manual/ja/function.date-create.php