Bug #78055 [Com]: DatePeriod recurrences changing after creation

From: Date: Thu, 23 May 2019 14:01:24 +0000
Subject: Bug #78055 [Com]: DatePeriod recurrences changing after creation
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-220970@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78055&edit=1 ID: 78055 Comment by: sjon@php.net Reported by: kb2kztynisv99h3ykx at mail dot uebernickel dot info Summary: DatePeriod recurrences changing after creation Status: Open Type: Bug Package: Date/time related Operating System: macOS PHP Version: 7.3.5 Block user comment: N Private report: N New Comment: Looking at Bug #75113 - using the recurrences property is not really supported - maybe that should be removed in the documentation now that getRecurrences is available? Previous Comments: ------------------------------------------------------------------------ [2019-05-23 12:31:49] kb2kztynisv99h3ykx at mail dot uebernickel dot info Description: ------------ When creating a DatePeriod object using the "recurrences" constructor, it internally changes the counter by increasing it by 1. As the test script illustrates the expectation would be to have the given count of iterations, but it actually contains one more. The documentation at https://www.php.net/manual/en/class.dateperiod.php misses the details. My guess is some relation to the "include start date" option. Test script: --------------- <?php $start = new DateTime('2018-12-31 00:00:00'); $interval = new DateInterval('P1M'); $recurrences = 5; $period = new DatePeriod($start, $interval, $recurrences); $dates = iterator_to_array($period); assert($recurrences === $period->recurrences, 'The recurrences should match.'); assert($recurrences === count($dates), 'The iterator count should match the recurrences.'); var_dump(array_map(function(DateTime $date) { return $date->format('Y-m-d'); }, iterator_to_array($period))); Expected result: ---------------- My expectation would be to have 5 dates even when including the start date. Actual result: -------------- The actual result are 6 dates within the iterator. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78055&edit=1

« previous php.bugs (#220970) next »