web関連
【PHP】年が変わるまで後何日かを求める方法
年が変わるまで後何日かどうかをDateTimeクラス、date関数、time関数、strtotime関数で求めてみた時の備忘録
年が変わるまで後何日か求める方法
- 年末の日時を取得する際にmktime関数を使う方法もあるけど今回はstrtotime関数で統一
- floor関数で小数点以下は切り捨て
Memo:mktime関数での取得方法はこちら
DateTimeクラスを使った場合
$lastday = new DateTime('last day of december this year');// 年末の時刻取得(2020年12月31日0時0分)
$today = new DateTime();// 現在時刻取得
$diff = $lastday->diff($today);
echo $diff->days . '日';// 29日
diffの使い方は別の備忘録にてまとめる予定
date関数を使った場合
$lastday = strtotime('last day of december this year');// タイムスタンプとして年末の時刻取得(2020年12月31日0時0分)
$today = strtotime(date('YmdHis'));// タイムスタンプとして現在時刻取得
// (年末 - 現在) / (秒 * 分 * 時)で年末まで何日か求められる
$diff = ($lastday - $today) / (60 * 60 * 24);
echo floor($diff) . '日';// 29日
date関数使って差分を求めるにはタイムスタンプ化をしないと無理そう
time関数やstrtotime関数でタイムスタンプとして取得した方が早いわ
date関数は「タイムスタンプ→日付」にフォーマットを整えて変換するものなのかもね
time関数やstrtotime関数でタイムスタンプとして取得した方が早いわ
date関数は「タイムスタンプ→日付」にフォーマットを整えて変換するものなのかもね
time関数を使った場合
$lastday = strtotime('last day of december this year');// タイムスタンプとして年末の時刻取得(2020年12月31日0時0分)
$today = time();// タイムスタンプとして現在時刻取得
// (年末 - 現在) / (秒 * 分 * 時)で年末まで何日か求められる
$diff = ($lastday - $today) / (60 * 60 * 24);
echo floor($diff) . '日';// 29日
strtotime関数を使った場合
$lastday = strtotime('last day of december this year');// タイムスタンプとして現在時刻取得
$today = strtotime('now');
$diff = ($lastday - $today) / (60 * 60 * 24);
echo floor($diff) . '日';// 29日
まとめ
差分を求めるならDateTimeクラスを使うかstrtotime関数を使うのが早い