Doc #67034 [Ver->Csd]: Unable to compare DateInterval instances with == operator
| From: | git@php.net | Date: | Mon, 23 May 2022 09:31:58 +0000 |
| Subject: | Doc #67034 [Ver->Csd]: Unable to compare DateInterval instances with == operator | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-19443@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67034&edit=1
ID: 67034
Updated by: git@php.net
Reported by: from dot php dot net at brainbox dot cz
Summary: Unable to compare DateInterval instances with ==
operator
-Status: Verified
+Status: Closed
Type: Documentation Problem
Package: Date/time related
PHP Version: 5.6.0alpha3
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of cmb69 (author) and web-flow (committer)
Revision: https://github.com/php/doc-en/commit/3d9dad29c75a70e7985ed595dfa2a836e61418da
Log: Fix bug #67034: Unable to compare DateInterval instances with == operator
Previous Comments:
------------------------------------------------------------------------
[2022-05-20 16:12:04] cmb@php.net
The following pull request has been associated:
Patch Name: Fix bug 67034: Unable to compare DateInterval instances with == operator
On GitHub: https://github.com/php/doc-en/pull/1590
Patch: https://github.com/php/doc-en/pull/1590.patch
------------------------------------------------------------------------
[2022-05-13 14:18:19] derick@php.net
Where would we document this CMB?
------------------------------------------------------------------------
[2021-02-26 21:50:51] cmb@php.net
DatePeriod comparision are explicitly disallowed (and as such
return false) as of PHP 7.4.0, for the reasons outlined above.
This is apparently not yet documented, though.
------------------------------------------------------------------------
[2014-12-08 17:30:47] mfaust at usinternet dot com
Comparisons of DatePeriod really ins't feasible without knowing a start date. For example
'P1M' and 'P30D' are equal (==) for some months, but not others. The ==
comparison is possible for time-only date periods but for anything involving dates you can't
make a reliable assumption. My recommendation is to return TRUE when all the parts patch exactly (eg
'PT60S' == 'PT60S' but 'PT1M' != 'PT60S') just to make the
behavior consistent if a date portion is involved.
If you want a true comparison then do something like this:
$now = new DateTimeImmutable();
if($now->addInterval($intervalA) == $now->addInterval($intervalB)){...
(note that DateTimeImmutable will return a new object for each instead of modifying $now)
------------------------------------------------------------------------
[2014-04-06 12:16:53] from dot php dot net at brainbox dot cz
Description:
------------
I am unable to compare DatePeriod timezones with equality operator. The operator always returns true
regardless the DatePeriod value.
Result can be seen here: http://3v4l.org/b8AAS
Test script:
---------------
// different
var_dump(new DateInterval('PT1S') == new DateInterval('PT2S'));
// same
var_dump(new DateInterval('PT1S') == new DateInterval('PT1S'));
Expected result:
----------------
bool(false)
bool(true)
Actual result:
--------------
bool(true)
bool(true)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67034&edit=1