3v4l.org

run code in 300+ PHP versions simultaneously
<?php function date_interval_iso(DateInterval $interval, string $default = 'PT0F') { static $f = ['S0F', 'M0S', 'H0M', 'DT0H', 'M0D', 'P0Y', 'Y0M', 'P0M']; static $r = ['S', 'M', 'H', 'DT', 'M', 'P', 'Y', 'P']; return rtrim(str_replace($f, $r, $interval->format('P%yY%mM%dDT%hH%iM%sS%fF') ), 'PT') ?: $default; } $date1 = new DateTimeImmutable(); $date2 = new DateTimeImmutable(); //test 0 duration DateInterval echo date_interval_iso($date1->diff($date1)) . PHP_EOL; //test microseconds echo date_interval_iso($date2->diff($date1));
Output for 7.3.30, 7.3.33, 8.0.24, 8.0.29, 8.1.1 - 8.1.2, 8.1.4, 8.1.7 - 8.1.9, 8.1.12, 8.1.15 - 8.1.16, 8.1.20, 8.2.0, 8.2.3, 8.2.6, 8.2.9, 8.3.5, 8.3.24, 8.4.3, 8.4.12
PT0F PT6F
Output for 7.3.31, 7.4.33, 8.0.26 - 8.0.28, 8.0.30, 8.2.23, 8.2.26, 8.3.4, 8.3.10, 8.3.14 - 8.3.17, 8.3.19, 8.3.25, 8.4.6, 8.4.11
PT0F PT5F
Output for 7.4.12, 8.4.10
PT0F PT16F
Output for 7.4.26, 8.0.15, 8.0.25, 8.1.0, 8.1.3, 8.1.5 - 8.1.6, 8.1.10, 8.1.13, 8.1.18, 8.1.22, 8.1.29 - 8.1.30, 8.2.2, 8.2.4 - 8.2.5, 8.2.7 - 8.2.8, 8.2.22, 8.3.23, 8.4.8 - 8.4.9
PT0F PT7F
Output for 8.0.20, 8.1.32, 8.2.25, 8.2.27, 8.4.7
PT0F PT12F
Output for 7.3.0, 7.3.26, 7.4.13, 8.0.11, 8.4.5
PT0F PT11F
Output for 8.4.4
PT0F PT13F
Output for 8.1.17, 8.1.21, 8.1.25, 8.2.12, 8.2.15, 8.3.0, 8.3.2, 8.3.8 - 8.3.9, 8.3.11 - 8.3.13, 8.3.20, 8.3.22, 8.4.2
PT0F PT3F
Output for 8.4.1
PT0F PT88F
Output for 7.3.32, 8.1.23 - 8.1.24, 8.2.16, 8.3.6 - 8.3.7, 8.3.21
PT0F PT4F
Output for 8.1.26 - 8.1.27, 8.2.11, 8.2.13 - 8.2.14, 8.3.1, 8.3.18
PT0F PT2F
Output for 7.4.23 - 7.4.24, 7.4.27, 7.4.32, 8.0.10, 8.0.13, 8.0.21, 8.0.23, 8.1.11, 8.1.14, 8.1.19, 8.2.1, 8.2.10, 8.2.20, 8.3.3
PT0F PT8F
Output for 7.3.9, 7.4.21, 8.0.8, 8.2.29
PT0F PT18F
Output for 7.3.14, 8.2.28
PT0F PT27F
Output for 7.4.20, 7.4.22, 7.4.28, 7.4.30, 8.0.5 - 8.0.7, 8.0.9, 8.0.14, 8.0.16, 8.0.18, 8.0.22, 8.2.19, 8.2.21, 8.2.24
PT0F PT9F
Output for 8.2.18
PT0F PT17F
Output for 8.2.17
PT0F PT14F
Output for 8.1.33
PT0F PT15F
Output for 7.3.29, 7.4.25, 7.4.29, 8.0.1, 8.0.12, 8.0.17, 8.0.19, 8.1.28, 8.1.31
PT0F PT10F
Output for 7.2.20, 7.2.32, 7.3.2, 8.0.0, 8.0.2 - 8.0.3
PT0F PT25F
Output for 7.4.11
PT0F PT4175F
Output for 7.2.24, 7.4.7, 7.4.10
PT0F PT32F
Output for 7.4.4, 7.4.9
PT0F PT42F
Output for 7.3.16 - 7.3.17, 7.3.22, 7.4.8
PT0F PT36F
Output for 7.4.6
PT0F PT29F
Output for 7.3.18, 7.4.5
PT0F PT22F
Output for 7.3.13, 7.4.3
PT0F PT23F
Output for 7.4.2
PT0F PT84F
Output for 7.4.1
PT0F PT71F
Output for 7.2.16, 7.3.1, 7.3.23, 7.4.0
PT0F PT28F
Output for 7.2.15, 7.2.27, 7.2.31, 7.2.33, 7.3.5, 7.3.21
PT0F PT38F
Output for 7.2.17, 7.3.20
PT0F PT35F
Output for 7.3.19
PT0F PT47F
Output for 7.3.15
PT0F PT230F
Output for 7.3.12
PT0F PT40F
Output for 7.2.19, 7.2.28, 7.3.4, 7.3.11
PT0F PT34F
Output for 7.3.10
PT0F PT20F
Output for 7.2.26, 7.3.7 - 7.3.8
PT0F PT31F
Output for 7.2.21, 7.3.6
PT0F PT33F
Output for 7.3.3
PT0F PT26F
Output for 7.2.34
PT0F PT48F
Output for 7.2.30
PT0F PT41F
Output for 7.2.29
PT0F PT57F
Output for 7.2.25
PT0F PT39F
Output for 7.2.23
PT0F PT44F
Output for 7.2.22
PT0F PT45F
Output for 7.2.18
PT0F PT63F
Output for 7.2.14
PT0F PT30F
Output for 7.2.13
PT0F P-1Y11M29DT23H59M59S998031F
Output for 7.2.12
PT0F P-1Y11M29DT23H59M59S999663F
Output for 7.2.11
PT0F PT-36F
Output for 7.2.10
PT0F PT-38F
Output for 7.2.9
PT0F PT-47F
Output for 7.2.8
PT0F PT-56F
Output for 7.2.3, 7.2.7
PT0F PT-35F
Output for 7.2.6
PT0F PT-53F
Output for 7.2.5
PT0F PT-46F
Output for 7.2.4
PT0F PT-33F
Output for 7.2.2
PT0F PT-50F
Output for 7.2.1
PT0F PT-40F
Output for 7.2.0
PT0F PT-23F
Output for 7.1.33
PT0F PT-21F

preferences:
150.35 ms | 497 KiB | 5 Q