2

$intervalがDateIntervalオブジェクトであるとする、記念日が現在の日付から 1 年以内にある場合 = 0 または記念日が現在の日付から 1 年以内にある場合 = -0 の条件ステートメントは true です。

$interval = $anniversary->diff($current_Date);
if ($interval->format('%r%y') < 0){
    do something
}
  • abs は両方とも 0 であるため使用できません
  • <= 0 は使用できません。どちらも
  • >= 0 は使用できません。これは、望ましくない他のケースで true に設定されるためです。
  • 0 は使用できず、0 を true にしたいため、< 0 は使用できません
  • == 0 は両方とも true であるため使用できません
  • > 0 は使用できません。0 は使用できず、0 を true にしたいからです

ですから、この数値は負の符号であるなどと言いたいのですが、私が知る限り、そのようなものは存在しません。何かご意見は?

** 編集 **

解決策は、日付オブジェクトを比較して、それらが適切な DateInterval 内にあるかどうかを判断することです。

if ($anniversary < $current_Date && $interval->format('%r%y') == 0){
4

2 に答える 2

2

の戻り値はDateTime::diff()DateIntervalオブジェクトであるため、解決策はDateInterval::invertプロパティを使用することです:-

$interval = $anniversary->diff($current_Date);
if ($interval->invert){
    //do something
}

マニュアルを引用するには:-

反転

間隔が負の期間を表す場合は 1、それ以外の場合は 0 です。DateInterval::format()を参照してください。

于 2012-12-12T16:41:13.650 に答える
0

代わりに行う必要があり%r%dます。あなたが本当に知る必要があるのは、それがポジティブかネガティブかだけですよね? 次に、日数の差を取得し、その数値が 0 未満か 0 より大きいかを確認します。その後、 aを実行days%365して年の差を取得するか、別のことを実行できます。%y

于 2012-12-10T08:55:32.387 に答える