3v4l.org

run code in 300+ PHP versions simultaneously
<?php function display(\DateTimeInterface $start, \DateTimeInterface $end) { echo $start->format('Y-m-d H:i T') . ' to ' . $end->format('Y-m-d H:i T') . \PHP_EOL; $periods = new \DatePeriod($start, new \DateInterval('PT1H'), $end); $hours = iterator_count($periods); echo $hours . ' hours (iterator_count)'; echo \PHP_EOL; $diff = $end->getTimestamp() - $start->getTimestamp(); $hours = $diff / ( 60 * 60 ); echo $hours . ' hours (60 * 60)'; echo \PHP_EOL; $diff = $end->diff($start); $hours = $diff->h + ($diff->days * 24); echo $hours . ' hours (days * 24)'; } function go(\DateTimezone $tz) { date_default_timezone_set($tz->getName()); //DST starts Apr. 2nd 02:00 and moves to 03:00 display( new \DateTime('2006-04-01T12:00:00'), new \DateTime('2006-04-02T12:00:00') ); echo \PHP_EOL . \PHP_EOL; //DST ends Oct. 29th 02:00 and moves to 01:00 display( new \DateTime('2006-10-28T12:00:00'), new \DateTime('2006-10-29T12:00:00') ); echo \PHP_EOL . \PHP_EOL; //full year display( new \DateTime('2006-01-01T12:00:00'), new \DateTime('2007-01-01T12:00:00') ); } go(new \DateTimezone('America/New_York')); echo \PHP_EOL . \PHP_EOL . '---------' . \PHP_EOL . \PHP_EOL; go(new \DateTimezone('UTC'));
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
2006-04-01 12:00 EST to 2006-04-02 12:00 EDT 23 hours (iterator_count) 23 hours (60 * 60) 24 hours (days * 24) 2006-10-28 12:00 EDT to 2006-10-29 12:00 EST 24 hours (iterator_count) 25 hours (60 * 60) 24 hours (days * 24) 2006-01-01 12:00 EST to 2007-01-01 12:00 EST 8759 hours (iterator_count) 8760 hours (60 * 60) 8760 hours (days * 24) --------- 2006-04-01 12:00 UTC to 2006-04-02 12:00 UTC 24 hours (iterator_count) 24 hours (60 * 60) 24 hours (days * 24) 2006-10-28 12:00 UTC to 2006-10-29 12:00 UTC 24 hours (iterator_count) 24 hours (60 * 60) 24 hours (days * 24) 2006-01-01 12:00 UTC to 2007-01-01 12:00 UTC 8760 hours (iterator_count) 8760 hours (60 * 60) 8760 hours (days * 24)
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45
Catchable fatal error: Argument 1 passed to display() must be an instance of DateTimeInterface, instance of DateTime given, called in /in/QBQUB on line 30 and defined in /in/QBQUB on line 3
Process exited with code 255.
Output for 5.2.0 - 5.2.17
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 5 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 7 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 7 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 10 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 22 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 28 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 29 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 31 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 31 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 35 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 36 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 38 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 38 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 42 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 43 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 47 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 51 Catchable fatal error: Argument 1 passed to display() must be an instance of DateTimeInterface, instance of DateTime given, called in /in/QBQUB on line 30 and defined in /in/QBQUB on line 3
Process exited with code 255.
Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 5 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 7 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 7 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 10 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 22 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 28 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 29 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 31 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 31 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 35 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 36 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 38 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 38 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 42 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 43 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 47 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 49 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 51 Fatal error: Class 'DateTimezone' not found in /in/QBQUB on line 47
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Parse error: syntax error, unexpected T_STRING, expecting ')' in /in/QBQUB on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Parse error: parse error, unexpected T_STRING, expecting ')' in /in/QBQUB on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/QBQUB on line 3 Parse error: parse error, expecting `')'' in /in/QBQUB on line 3
Process exited with code 255.

preferences:
253.64 ms | 401 KiB | 448 Q