3v4l.org

run code in 300+ PHP versions simultaneously
<?php function range_overlap($range1, $range2) { list($start, $end) = explode(' - ', $range1); $start = new DateTime($start); $end = new DateTime($end); $start1 = min($start, $end); $end1 = max($start, $end); list($start, $end) = explode(' - ', $range2); $start = new DateTime($start); $end = new DateTime($end); $start2 = min($start, $end); $end2 = max($start, $end); // check for special cases if ($start1 >= $start2 && $end1 <= $end2) { // range1 completely contained inside range2 $overlap = $start1->diff($end1); } elseif ($start2 >= $start1 && $end2 <= $end1) { // range2 completely contained inside range1 $overlap = $start2->diff($end2); } elseif ($end2 > $end1) { // range1 ends first $overlap = $start2->diff($end1); } else { // range2 ends first $overlap = $start1->diff($end2); } // if overlap is < 0 then there is no overlap $overlap_days = $overlap->invert ? 0 : ($overlap->format('%a') + 1); echo "overlap is $overlap_days days\n"; } range_overlap('2019-01-01 - 2019-01-10', '2019-01-06 - 2019-01-20'); // 5 days range_overlap('2019-01-01 - 2019-03-20', '2019-05-06 - 2019-04-20'); // no overlap range_overlap('2019-01-10 - 2019-05-20', '2019-01-01 - 2019-05-20'); // 131 days range_overlap('2019-01-06 - 2019-01-20', '2019-01-10 - 2019-01-01'); // 5 days range_overlap('2019-01-30 - 2019-01-10', '2019-01-12 - 2019-01-15'); // 4 days range_overlap('2019-02-01 - 2019-03-20', '2019-01-10 - 2019-02-28'); // 28 days
Output for git.master, git.master_jit, rfc.property-hooks
overlap is 5 days overlap is 0 days overlap is 131 days overlap is 5 days overlap is 4 days overlap is 28 days

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
116.37 ms | 405 KiB | 5 Q