web関連

【PHP】年が変わるまで後何日かを求める方法

年が変わるまで後何日かどうかをDateTimeクラス、date関数、time関数、strtotime関数で求めてみた時の備忘録

年が変わるまで後何日か求める方法

  • 年末の日時を取得する際にmktime関数を使う方法もあるけど今回はstrtotime関数で統一
  • floor関数で小数点以下は切り捨て

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関数を使った場合

$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関数を使うのが早い

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。