计算 PHP DatePeriod() 的迭代次数

2022-08-30 17:38:51

我了解日期周期的工作原理,但有一个例外,有没有办法从日期周期中找出有多少个间隔?

例如:

// define the period of the range
$period = new DatePeriod($begin, $rangeType, $end);

// iterate through the dates in range
foreach ( $period as $dt ) {
}

这就是我想从上面的代码中执行的操作:

echo count($period);

基本上,我想知道循环最终会运行多少次。foreach


答案 1

您可以使用iterator_count函数:

echo(iterator_count($period));

答案 2

假设您有兴趣仅计算天数(无论间隔规格如何) - thx @mark-amery提出这个问题!

另一种更明显的方法是区分2个日期并从结果中获取天数。

$numDays = $end->diff($begin)->days;
$numDaysFormatted = $end->diff($begin)->format('%d days');

请务必验证您的 GET vars 以避免日期警告/错误。

迟到总比没有好;-)

编辑:

如果您只有一个期间对象,则可以访问期间的开始和结束。

$numDays = $period
    ->getEndDate()
    ->diff($period->getStartDate())
    ->days;

推荐