<?php
$timezoneUtc = new DateTimeZone('UTC');
$timezoneBerlin = new DateTimeZone('Europe/Berlin');
$timezoneAmsterdam = new DateTimeZone('Europe/Amsterdam');
$dateTimeA = new DateTimeImmutable('2025-03-30 00:00:00', $timezoneUtc);
$dateTimeB = new DateTimeImmutable('2025-03-31 00:00:00', $timezoneUtc);
$dateTimeC = new DateTimeImmutable('2025-03-29 00:00:00', $timezoneBerlin);
$dateTimeD = new DateTimeImmutable('2025-03-31 00:00:00', $timezoneBerlin);
$dateTimeE = new DateTimeImmutable('2025-03-29 00:00:00', $timezoneAmsterdam);
$dateTimeF = new DateTimeImmutable('2025-03-31 00:00:00', $timezoneAmsterdam);
function toIntervalSpecification(DateInterval $interval): string
{
$specification = 'P';
$specification .= $interval->y ? $interval->y . 'Y' : '';
$specification .= $interval->m ? $interval->m . 'M' : '';
$specification .= $interval->d ? $interval->d . 'D' : '';
if ($interval->h ?? $interval->i ?? $interval->s ?? 0) {
$specification .= 'T';
$specification .= $interval->h ? $interval->h . 'H' : '';
$specification .= $interval->i ? $interval->i . 'M' : '';
$specification .= $interval->s ? $interval->s . 'S' : '';
}
if ($specification[-1] === 'P') {
$specification = 'PT0S';
}
return $specification;
}
$diffTwoTimezoneSameDstRulesA = $dateTimeC->diff($dateTimeF, true);
$diffTwoTimezoneSameDstRulesB = $dateTimeF->diff($dateTimeC, true);
$diffTwoTimezoneSameDstRulesC = $dateTimeE->diff($dateTimeD, true);
$diffTwoTimezoneSameDstRulesD = $dateTimeD->diff($dateTimeE, true);
echo toIntervalSpecification($diffTwoTimezoneSameDstRulesA) . PHP_EOL;
echo toIntervalSpecification($diffTwoTimezoneSameDstRulesB) . PHP_EOL;
echo toIntervalSpecification($diffTwoTimezoneSameDstRulesC) . PHP_EOL;
echo toIntervalSpecification($diffTwoTimezoneSameDstRulesD) . PHP_EOL;
- Output for git.master_jit, git.master
- P1DT23H
P1DT23H
P1DT23H
P1DT23H
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:
31.03 ms | 405 KiB | 5 Q