<?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