Req #70381 [Com]: Support comparing DateInterval objects
| From: | php dot net at anthonychambers dot co dot uk | Date: | Mon, 16 May 2016 12:11:52 +0000 |
| Subject: | Req #70381 [Com]: Support comparing DateInterval objects | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-201125@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70381&edit=1
ID: 70381
Comment by: php dot net at anthonychambers dot co dot uk
Reported by: accido at ukr dot net
Summary: Support comparing DateInterval objects
Status: Open
Type: Feature/Change Request
Package: Date/time related
Operating System: Xubuntu 14
PHP Version: 5.6.13RC1
Block user comment: N
Private report: N
New Comment:
I actually see this working back to 5.5.8 and up to 7.0.6 according to https://3v4l.org/TrPvp
The trick is that you have to inspect both intervals first. I just essentially did this:
var_export($interval1, true);
var_export($interval2, true);
var_export($interval1 < $interval2);
And that should work. If you don't check either of the intervals then you get different
results:
* Check 0 = Always returns false
* Check 1 = Always returns true
* Check 2 = Returns correct values
Previous Comments:
------------------------------------------------------------------------
[2015-09-10 19:52:40] requinix@php.net
Ha, that's true. And it makes sense since it's not always possible to determine the number
of days in an arbitrary interval. That could be a problem when trying to compare two DateIntervals
in a general sense, though: what is P30D <=> P1M?
A better approach here would be to compare the start date + interval <=> end date.
------------------------------------------------------------------------
[2015-09-10 13:54:16] john_zuk at wp dot pl
You can't use ->days as a workaround, because of:
http://php.net/manual/en/class.dateinterval.php#dateinterval.props.days
See: https://3v4l.org/nlH2v
------------------------------------------------------------------------
[2015-08-28 11:45:43] requinix@php.net
DateIntervals are not comparable. You can use ->days as a workaround.
https://3v4l.org/H7JsN
------------------------------------------------------------------------
[2015-08-28 10:48:17] accido at ukr dot net
Description:
------------
Wrong DateInterval comparsion result
Test script:
---------------
$a = new DateTime('1981-10-10');
$b = new DateTime('1980-10-01');
$m = new DateInterval('P1M');
var_dump($a->diff($b) > $m);
//bool(false)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70381&edit=1