繁体   English   中英

计算PHP DatePeriod()的迭代次数

[英]Count iterations of PHP DatePeriod()

我理解日期是如何工作的,有一个例外,有没有办法从日期周期中找出有多少个区间?

例如:

// 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循环最终会运行多少次。

您可以使用iterator_count函数:

echo(iterator_count($period));

假设您只想计算天数(无论间隔规格如何) - thx @ mark-amery将其提升!

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

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

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

迟到总比不到好 ;-)

编辑:

如果您只有一个句点对象,则可以访问句点的开头和结尾。

$numDays = $period
    ->getEndDate()
    ->diff($period->getStartDate())
    ->days;
class MyDatePeriod extends DatePeriod
{
    public $dates;

    public function toArray()
    {
        if ($this->dates === null) {
            $this->dates = iterator_to_array($this);
        }

        return $this->dates;
    }
}

$p = new MyDatePeriod(date_create('2008-01-01'),
                      DateInterval::createFromDateString( "+2 days" ),
                      date_create('2008-12-31'));

echo count($p->toArray()) . "\n"; // 183

echo count($p->toArray()) . "\n"; // 183

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM