[PHP]DateTime::diffで誕生日までの日数を求める

DateTimeクラスの練習として作成したPHPスクリプト↓

$my_next_birthday = '2013/05/11';//次の誕生日
$today = new DateTime();
$birthday = new DateTime($my_next_birthday);
$interval = $today->diff($birthday, true);
echo $interval->format('あなたの誕生日は%mヶ月と%d日後です。');

<解説>

DateTimeクラスには日付・時刻の操作に関するメソッドが詰まっている。日付の整形くらいならdate関数でもいいけど、DateTimeを使えば差分を一発でとったり加算・減算をしたりといった処理を手軽に行うことができる(まあ、strtotime関数を使った処理でも大した手間ではないけど…)。

DateTime::diffメソッドの作りは以下。

DateInterval DateTime::diff(DateTime $dt [, bool $absolute = FALSE])

第一引数は日付・時刻形式のデータ。オプションの第二引数は戻り値を絶対値で返すかを設定(デフォルトはFALSE)。

戻り値はDateIntervalオブジェクト。DateIntervalオブジェクトは日付・時刻の差分を表すオブジェクトで、メソッドはコンストラクターを除くと、DateInterval::createFromDateStringDateInterval::formatの2つだけ。ここでは、formatを使っている。

コメントを残す

コメントを残す