3v4l.org

run code in 300+ PHP versions simultaneously
<?php $patterns = [ ['2016-01-01', '2016-02-01'], ['2016-02-01', '2016-03-01'], ['2016-03-01', '2016-04-01'], ['2016-02-01', '2016-02-28'], ['2016-03-01', '2016-03-31'], ['2016-04-01', '2016-04-30'], ]; $timezones = ['UTC', 'Asia/Tokyo']; foreach ($timezones as $timezone) { foreach ($patterns as $pattern) { $d1 = new DateTime($pattern[0], new DateTimeZone($timezone)); $d2 = new DateTime($pattern[1], new DateTimeZone($timezone)); $diff = $d1->diff($d2); printf( "There are %d months %2d days between %s and %s (%s)\n", $diff->m, $diff->d, $pattern[0], $pattern[1], $timezone ); } echo "\n"; }
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
There are 1 months 0 days between 2016-01-01 and 2016-02-01 (UTC) There are 1 months 0 days between 2016-02-01 and 2016-03-01 (UTC) There are 1 months 0 days between 2016-03-01 and 2016-04-01 (UTC) There are 0 months 27 days between 2016-02-01 and 2016-02-28 (UTC) There are 0 months 30 days between 2016-03-01 and 2016-03-31 (UTC) There are 0 months 29 days between 2016-04-01 and 2016-04-30 (UTC) There are 1 months 0 days between 2016-01-01 and 2016-02-01 (Asia/Tokyo) There are 1 months 0 days between 2016-02-01 and 2016-03-01 (Asia/Tokyo) There are 1 months 0 days between 2016-03-01 and 2016-04-01 (Asia/Tokyo) There are 0 months 27 days between 2016-02-01 and 2016-02-28 (Asia/Tokyo) There are 0 months 30 days between 2016-03-01 and 2016-03-31 (Asia/Tokyo) There are 0 months 29 days between 2016-04-01 and 2016-04-30 (Asia/Tokyo)
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30
There are 1 months 0 days between 2016-01-01 and 2016-02-01 (UTC) There are 1 months 0 days between 2016-02-01 and 2016-03-01 (UTC) There are 1 months 0 days between 2016-03-01 and 2016-04-01 (UTC) There are 0 months 27 days between 2016-02-01 and 2016-02-28 (UTC) There are 0 months 30 days between 2016-03-01 and 2016-03-31 (UTC) There are 0 months 29 days between 2016-04-01 and 2016-04-30 (UTC) There are 1 months 0 days between 2016-01-01 and 2016-02-01 (Asia/Tokyo) There are 0 months 29 days between 2016-02-01 and 2016-03-01 (Asia/Tokyo) There are 1 months 2 days between 2016-03-01 and 2016-04-01 (Asia/Tokyo) There are 0 months 27 days between 2016-02-01 and 2016-02-28 (Asia/Tokyo) There are 1 months 1 days between 2016-03-01 and 2016-03-31 (Asia/Tokyo) There are 0 months 29 days between 2016-04-01 and 2016-04-30 (Asia/Tokyo)

preferences:
236.42 ms | 404 KiB | 300 Q