note 129684 added to class.dateinterval
| From: | edgaras@levinson.lt | Date: | Thu, 01 Aug 2024 14:58:35 +0000 |
| Subject: | note 129684 added to class.dateinterval | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-221456@lists.php.net to get a copy of this message | ||
There is a handy way to compare intervals by adding them to 0 dates and comparing dates instead
<?php
function compare(DateInterval $first, DateInterval $second): int
{
$firstDate = (new DateTime())->setTimestamp(0)->add($first);
$secondDate = (new DateTime())->setTimestamp(0)->add($second);
return $firstDate <=> $secondDate;
}
echo compare(new DateInterval('P2D'), new DateInterval('PT48H')) . PHP_EOL;
echo compare(DateInterval::createFromDateString('2 days'),
DateInterval::createFromDateString('48 hours')) . PHP_EOL;
echo compare(DateInterval::createFromDateString('2 days'),
DateInterval::createFromDateString('49 hours')) . PHP_EOL;
echo compare(DateInterval::createFromDateString('2 days'),
DateInterval::createFromDateString('47 hours')) . PHP_EOL;
?>
Outputs:
0
0
-1
1
----
Server IP: 45.112.84.4
Probable Submitter: 80.90.5.137 (proxied: 63.35.78.15)
----
Manual Page -- https://php.net/manual/en/class.dateinterval.php
Edit -- https://main.php.net/note/edit/129684
Del: integrated -- https://main.php.net/note/delete/129684/integrated
Del: useless -- https://main.php.net/note/delete/129684/useless
Del: bad code -- https://main.php.net/note/delete/129684/bad+code
Del: spam -- https://main.php.net/note/delete/129684/spam
Del: non-english -- https://main.php.net/note/delete/129684/non-english
Del: in docs -- https://main.php.net/note/delete/129684/in+docs
Del: other reasons-- https://main.php.net/note/delete/129684
Reject -- https://main.php.net/note/reject/129684
Search -- https://main.php.net/manage/user-notes.php