Bug #74885 [Opn]: Wrong behaviour when comparing dates with microseconds

From: Date: Sun, 09 Jul 2017 14:57:56 +0000
Subject: Bug #74885 [Opn]: Wrong behaviour when comparing dates with microseconds
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-209936@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74885&edit=1 ID: 74885 Updated by: requinix@php.net Reported by: marcospassos dot com at gmail dot com Summary: Wrong behaviour when comparing dates with microseconds Status: Open Type: Bug Package: Date/time related PHP Version: 7.1.7 -Assigned To: +Assigned To: derick Block user comment: N Private report: N New Comment: Surely assertTrue($expected == $date) is simpler? Anyway, it's a floating-point issue where 0.456789 + .000001 != 0.456790 @derick can say whether this is a bug to fix or not. As a workaround you can compare YmdHisu strings, which will have the 'u' part rounded to 6 places. https://3v4l.org/YlCDm Previous Comments: ------------------------------------------------------------------------ [2017-07-09 14:30:45] marcospassos dot com at gmail dot com Description: ------------ Modifying the microsecond part of a DateTime leads to wrong behavior in comparison operators. Test script: --------------- $expected = new DateTimeImmutable('2015-08-31 01:02:04.456790'); $date = (new DateTimeImmutable('2015-08-31 01:02:03.456789'))->modify('+1000001 microseconds'); // Expected false, but it's actually true assertFalse($expected > $date || $expected < $date); Expected result: ---------------- True Actual result: -------------- False ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=74885&edit=1

« previous php.bugs (#209936) next »