3v4l.org

run code in 300+ PHP versions simultaneously
<?php $calStart = DateTime::createFromFormat("Y-m-d", "2016-12-20");; echo $calStart->format("r") . "\n"; $intervalFromMon = new DateInterval("P" . ($calStart->format("N") - 1) . "D"); $intervalFromMon->invert = 1; $calStart->add($intervalFromMon); echo $calStart->format("r") . "\n"; $calEnd = clone $calStart; $calEnd->add(new DateInterval("P28D")); echo $calEnd->format("r") . "\n"; $period = new DatePeriod($calStart, new DateInterval('P1D'), $calEnd); foreach($period as $day => $curDay){ echo "iter " . $day . " => " . $curDay->format("r") . "\n"; }
Output for 5.6.0 - 5.6.26, 7.0.0 - 7.0.11, 7.0.20, 7.1.5 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.31, 7.4.0 - 7.4.33, 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
Tue, 20 Dec 2016 08:33:42 +0100 Mon, 19 Dec 2016 08:33:42 +0100 Mon, 16 Jan 2017 08:33:42 +0100 iter 0 => Mon, 19 Dec 2016 08:33:42 +0100 iter 1 => Tue, 20 Dec 2016 08:33:42 +0100 iter 2 => Wed, 21 Dec 2016 08:33:42 +0100 iter 3 => Thu, 22 Dec 2016 08:33:42 +0100 iter 4 => Fri, 23 Dec 2016 08:33:42 +0100 iter 5 => Sat, 24 Dec 2016 08:33:42 +0100 iter 6 => Sun, 25 Dec 2016 08:33:42 +0100 iter 7 => Mon, 26 Dec 2016 08:33:42 +0100 iter 8 => Tue, 27 Dec 2016 08:33:42 +0100 iter 9 => Wed, 28 Dec 2016 08:33:42 +0100 iter 10 => Thu, 29 Dec 2016 08:33:42 +0100 iter 11 => Fri, 30 Dec 2016 08:33:42 +0100 iter 12 => Sat, 31 Dec 2016 08:33:42 +0100 iter 13 => Sun, 01 Jan 2017 08:33:42 +0100 iter 14 => Mon, 02 Jan 2017 08:33:42 +0100 iter 15 => Tue, 03 Jan 2017 08:33:42 +0100 iter 16 => Wed, 04 Jan 2017 08:33:42 +0100 iter 17 => Thu, 05 Jan 2017 08:33:42 +0100 iter 18 => Fri, 06 Jan 2017 08:33:42 +0100 iter 19 => Sat, 07 Jan 2017 08:33:42 +0100 iter 20 => Sun, 08 Jan 2017 08:33:42 +0100 iter 21 => Mon, 09 Jan 2017 08:33:42 +0100 iter 22 => Tue, 10 Jan 2017 08:33:42 +0100 iter 23 => Wed, 11 Jan 2017 08:33:42 +0100 iter 24 => Thu, 12 Jan 2017 08:33:42 +0100 iter 25 => Fri, 13 Jan 2017 08:33:42 +0100 iter 26 => Sat, 14 Jan 2017 08:33:42 +0100 iter 27 => Sun, 15 Jan 2017 08:33:42 +0100
Output for 7.3.32 - 7.3.33, 8.0.13
Tue, 20 Dec 2016 07:33:42 +0000 Mon, 19 Dec 2016 07:33:42 +0000 Mon, 16 Jan 2017 07:33:42 +0000 iter 0 => Mon, 19 Dec 2016 07:33:42 +0000 iter 1 => Tue, 20 Dec 2016 07:33:42 +0000 iter 2 => Wed, 21 Dec 2016 07:33:42 +0000 iter 3 => Thu, 22 Dec 2016 07:33:42 +0000 iter 4 => Fri, 23 Dec 2016 07:33:42 +0000 iter 5 => Sat, 24 Dec 2016 07:33:42 +0000 iter 6 => Sun, 25 Dec 2016 07:33:42 +0000 iter 7 => Mon, 26 Dec 2016 07:33:42 +0000 iter 8 => Tue, 27 Dec 2016 07:33:42 +0000 iter 9 => Wed, 28 Dec 2016 07:33:42 +0000 iter 10 => Thu, 29 Dec 2016 07:33:42 +0000 iter 11 => Fri, 30 Dec 2016 07:33:42 +0000 iter 12 => Sat, 31 Dec 2016 07:33:42 +0000 iter 13 => Sun, 01 Jan 2017 07:33:42 +0000 iter 14 => Mon, 02 Jan 2017 07:33:42 +0000 iter 15 => Tue, 03 Jan 2017 07:33:42 +0000 iter 16 => Wed, 04 Jan 2017 07:33:42 +0000 iter 17 => Thu, 05 Jan 2017 07:33:42 +0000 iter 18 => Fri, 06 Jan 2017 07:33:42 +0000 iter 19 => Sat, 07 Jan 2017 07:33:42 +0000 iter 20 => Sun, 08 Jan 2017 07:33:42 +0000 iter 21 => Mon, 09 Jan 2017 07:33:42 +0000 iter 22 => Tue, 10 Jan 2017 07:33:42 +0000 iter 23 => Wed, 11 Jan 2017 07:33:42 +0000 iter 24 => Thu, 12 Jan 2017 07:33:42 +0000 iter 25 => Fri, 13 Jan 2017 07:33:42 +0000 iter 26 => Sat, 14 Jan 2017 07:33:42 +0000 iter 27 => Sun, 15 Jan 2017 07:33:42 +0000
Output for 5.6.27 - 5.6.29, 7.0.12 - 7.0.14, 7.1.0
Tue, 20 Dec 2016 08:33:41 +0100 Mon, 19 Dec 2016 08:33:41 +0100 Mon, 16 Jan 2017 08:33:41 +0100 iter 0 => Mon, 19 Dec 2016 08:33:41 +0100 iter 1 => Tue, 20 Dec 2016 08:33:41 +0100 iter 2 => Wed, 21 Dec 2016 08:33:41 +0100 iter 3 => Thu, 22 Dec 2016 08:33:41 +0100 iter 4 => Fri, 23 Dec 2016 08:33:41 +0100 iter 5 => Sat, 24 Dec 2016 08:33:41 +0100 iter 6 => Sun, 25 Dec 2016 08:33:41 +0100 iter 7 => Mon, 26 Dec 2016 08:33:41 +0100 iter 8 => Tue, 27 Dec 2016 08:33:41 +0100 iter 9 => Wed, 28 Dec 2016 08:33:41 +0100 iter 10 => Thu, 29 Dec 2016 08:33:41 +0100 iter 11 => Fri, 30 Dec 2016 08:33:41 +0100 iter 12 => Sat, 31 Dec 2016 08:33:41 +0100 iter 13 => Sun, 01 Jan 2017 08:33:41 +0100 iter 14 => Mon, 02 Jan 2017 08:33:41 +0100 iter 15 => Tue, 03 Jan 2017 08:33:41 +0100 iter 16 => Wed, 04 Jan 2017 08:33:41 +0100 iter 17 => Thu, 05 Jan 2017 08:33:41 +0100 iter 18 => Fri, 06 Jan 2017 08:33:41 +0100 iter 19 => Sat, 07 Jan 2017 08:33:41 +0100 iter 20 => Sun, 08 Jan 2017 08:33:41 +0100 iter 21 => Mon, 09 Jan 2017 08:33:41 +0100 iter 22 => Tue, 10 Jan 2017 08:33:41 +0100 iter 23 => Wed, 11 Jan 2017 08:33:41 +0100 iter 24 => Thu, 12 Jan 2017 08:33:41 +0100 iter 25 => Fri, 13 Jan 2017 08:33:41 +0100 iter 26 => Sat, 14 Jan 2017 08:33:41 +0100 iter 27 => Sun, 15 Jan 2017 08:33:41 +0100

preferences:
94.76 ms | 1900 KiB | 4 Q