2つの日付の間の日付間隔の数を決定しようとしています。間隔は、月、日、時間、またはユーザーが選択したものであれば何でもかまいません。
現時点では再帰を使用する関数がありますが、再帰的なネスト制限のため、2つのポイントの間に100を超える間隔があると、これは機能しなくなります。
private static function findCurrentInterval($initialStartTimestamp, $intervalStrtotimeFormat, $now = null, $period = 1)
{
if (is_null($now)){
$now = time();
}
$endOfCurrentInterval = strtotime($intervalStrtotimeFormat, $initialStartTimestamp);
if ($now > $initialStartTimestamp && $now < $endOfCurrentInterval){
return new self($period);
}else{
# increment the period ID tracking variable
$period++;
return self::findCurrentInterval($endOfCurrentInterval, $intervalStrtotimeFormat, $now, $period);
}
}
必要なのは、現在の時間間隔を表す整数値です。つまり、7日間隔に設定されていて、開始点から現在まで20日が経過すると、'3が返されます。 '、第3期になるからです。
おそらくDateIntervalを使用して、再帰なしでこれを行う方法はありますか?
注意:これが数日または数時間に制限されている場合、これは本当に簡単ですが、長さが可変である可能性がある月をサポートする必要があります。