0

最初の日付は今日の日付で、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

4

1 に答える 1

1

(integer)すぐ後に続くものをint型としてキャストします。あなたの場合、$int->format('%a')整数にキャストします。

次のことを考慮してください (intは のエイリアスですinteger)。

$str = "10";
$num = (int)$str;
 
if ($str === 10) echo "String";
if ($num === 10) echo "Integer";

上記の例では$int = $dtE->diff($dtS)、がフォーマットの 2 つのオブジェクトintの違いです。ドキュメントによると、は 2 つのオブジェクト間の合計日数を返します。を使用して戻り値をキャストすると、確実に型になります。DateTimeDateTimeformat('%a')(integer)int

更新

型キャストの詳細については、ここ(整数の場合)ここ (一般的な「型ジャグリング」の場合)を参照してください。

ドキュメントから:

値を明示的に整数に変換するには、(int) または (integer) キャストを使用します。

(int), (integer) - 整数にキャスト

于 2013-11-07T05:43:40.123 に答える