3v4l.org

run code in 300+ PHP versions simultaneously
<?php date_default_timezone_set('UTC'); $begin = new DateTime('today midnight'); $end = new DateTime(); $interval = new DateInterval('PT60M'); $interval->invert = 1; $daterange = new DatePeriod($begin, $interval, $end); $range = []; foreach ($daterange as $date){ $range[] = [ 'from' => $date->format("H:i"), 'to' => $date->sub($interval)->format("H:i") ]; } print_r($range);
Output for 7.1.0 - 7.1.21, 7.2.0 - 7.2.9, 7.2.29 - 7.2.33, 7.3.16 - 7.3.33, 7.4.4 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Array ( [0] => Array ( [from] => 00:00 [to] => 01:00 ) [1] => Array ( [from] => 01:00 [to] => 02:00 ) [2] => Array ( [from] => 02:00 [to] => 03:00 ) [3] => Array ( [from] => 03:00 [to] => 04:00 ) )
Output for 7.1.26 - 7.1.33, 7.2.17 - 7.2.25, 7.3.0 - 7.3.12, 7.4.0
Array ( [0] => Array ( [from] => 00:00 [to] => 01:00 ) [1] => Array ( [from] => 01:00 [to] => 02:00 ) [2] => Array ( [from] => 02:00 [to] => 03:00 ) [3] => Array ( [from] => 03:00 [to] => 04:00 ) [4] => Array ( [from] => 04:00 [to] => 05:00 ) [5] => Array ( [from] => 05:00 [to] => 06:00 ) [6] => Array ( [from] => 06:00 [to] => 07:00 ) [7] => Array ( [from] => 07:00 [to] => 08:00 ) [8] => Array ( [from] => 08:00 [to] => 09:00 ) [9] => Array ( [from] => 09:00 [to] => 10:00 ) [10] => Array ( [from] => 10:00 [to] => 11:00 ) [11] => Array ( [from] => 11:00 [to] => 12:00 ) [12] => Array ( [from] => 12:00 [to] => 13:00 ) [13] => Array ( [from] => 13:00 [to] => 14:00 ) [14] => Array ( [from] => 14:00 [to] => 15:00 ) )

preferences:
34.33 ms | 412 KiB | 5 Q