最初の日付は今日の日付で、2 番目の日付は DB から取得されています。私がやろうとしていることの目的は、DB に保存されている日付である期限の 7 日前にアラートをトリガーすることです。
私はこれをいくつかの異なる方法で理解しようとしましたが、成功しませんでした。関数を使用してstrtotime
、取得した日付から日数を減算し、それを今日の日付と比較することから始めました。これが私の最初の試みです:
$date1 = strtotime(date('2013-11-14',strtotime('-7 days')));
$date2 = strtotime(date('Y-m-d'));
$check = $date1 - $date2;
$check = date('j',$check);
if($check <= 7){echo "Under 1 week";}
しかし、月は考慮されておらず、日のみが考慮されているため、これは機能しません...したがって、2013-12-14 は 2013-11-13 と同じ結果を返します。
それで、私は試しました:
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('now');
$interval = $datetime1->diff($datetime2);
$interval->format('%a');
if($interval <= 7){echo "Under 1 week";}
しかし、その後エラーが発生します:
*Object of class DateInterval could not be converted to int*
数値は何があっても整数だと思っていたのですが、そうではないことがわかりました。
他の誰かがこれと同じことをしようとしていると確信しており、完全に機能するこの役立つコードを見つけたので、インターネットで多くの検索を行いました。
function e_days($end,$start) {
/************************************************************************/
/* Purpose: To get the elapsed days of date diff as integer. */
/************************************************************************/
$dtS = new DateTime($start);
$dtE = new DateTime($end);
$int = $dtE->diff($dtS);
$ret = (integer) $int->format('%a');
return $ret;
} // end function
普段なら喜んで続けていきたいけど、見つけたものをそのまま使うのは好きじゃない。私が理解していない部分はこの行です:
$ret = (integer) $int->format('%a');
「(整数)」とは?数値を整数に変更する必要があると思いますが、 としてリストされている php.net で見つけることができませんfunction
。
これを行う別の方法があるかどうか、またはこの男がそれを釘付けにしたかどうかも知りたいです。
機能クレジット: OldManRiver