Skip to content

DatePeriod::getIterator()->valid() advances DatePeriod iterator #7979

@dg

Description

@dg

Description

The following code:

<?php
$start = \DateTime::createFromFormat('Y-m-d', '2021-01-01');
$end = \DateTime::createFromFormat('Y-m-d', '2021-01-10');
$period = new \DatePeriod($start, \DateInterval::createFromDateString('1 day'), $end);
$iterator = new \CachingIterator($period->getIterator(), 0);

foreach ($iterator as $item) {
	echo $item->format('c'), "\n";
	$iterator->hasNext(); // advances iterator
	$iterator->hasNext(); // advances iterator
}

It returns:

2021-01-01T07:56:05+01:00
2021-01-04T07:56:05+01:00
2021-01-07T07:56:05+01:00
...

But it should return

2021-01-01T07:54:37+01:00
2021-01-02T07:54:37+01:00
2021-01-03T07:54:37+01:00
...

PHP Version

PHP 8.0-8.1

Operating System

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions