Sponsored Link
[PHP]指定した日時までをカウントダウンする
タイムセールやイベント告知などで指定した日や時刻まで後どのくらい期間があるかを計算したい場合、DateTime クラスの diff() 関数を使うと簡単に得ることができます。
DateTime クラスは日時計算や整形出力に関するクラスです。下記サンプルの実行には PHP 5.3 以上が必要です。
2038年問題にも対応する関数なので今後必須になってくると思います。
date_default_timezone_set("Asia/Tokyo"); // もしタイムゾーンを日本に設定していない場合はこれが必要
$datetime = new DateTime('2030/01/01 00:00:00');
$current = new DateTime('now');
$diff = $current->diff($datetime);
printf('残り %d年%dヶ月%d日 %d時間%d分%d秒(%d日)',
$diff->y, $diff->m, $diff->d, $diff->h,$diff->i,$diff->s, $diff->days);
2018-02-01 追記
月を跨いで、残り「日」を取りたい場合、formatで指定する必要があります。
$diff->format('%a');
これで月を跨いでも残り「日」を取得することが出来ます。
ちなみに締め切りしたかどうかはinvertで取れます。
$datetime = new DateTime('2017/10/01 00:00:00');
$current = new DateTime('now');
$diff = $current->diff($datetime);
if ($diff->invert) {
$dead_line = '締め切りました';
} else {
$dead_line = $diff->d > 0 ? '締め切りまであと' . $diff->d . '日';
}
細かくカウントしなくちゃいけない場合も、この関数は使い勝手良く出来そうですね!