我理解日期是如何工作的,除了一个例外,有没有办法从日期中找出有多少个区间?
例如:
// 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
循环最终会运行多长时间。
答案 0 :(得分:29)
您可以使用iterator_count
功能:
echo(iterator_count($period));
答案 1 :(得分:1)
假设您只想计算天数(无论间隔规格如何) - thx @ mark-amery提出这个问题!
另一个更明显的方法是区分2个日期并从结果中获取天数。
$numDays = $end->diff($begin)->days;
$numDaysFormatted = $end->diff($begin)->format('%d days');
请务必验证您的GET变量以避免日期警告/错误。
迟到总比没有好; - )
编辑:
如果您只有一个句点对象,则可以访问句点的开头和结尾。
$numDays = $period
->getEndDate()
->diff($period->getStartDate())
->days;
答案 2 :(得分:-2)
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