我正在尝试确定两个日期之间的日期间隔数。间隔可以是几个月、几天、几小时或用户选择的任何时间。
目前我有一个使用递归的函数,但是,由于递归嵌套限制,如果两点之间的间隔超过 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 ',因为我们将进入第三阶段。
有没有办法在没有递归的情况下做到这一点,也许使用 DateInterval?
注意,如果它仅限于几天或几小时,这将非常简单 - 但它需要支持几个月,它可以有可变的长度。