return 0;
}
- return (o1->time->f < o2->time->f) ? -1 : 1;
+ if (o1->time->sse < 0) {
+ return (o1->time->f < o2->time->f) ? 1 : -1;
+ } else {
+ return (o1->time->f < o2->time->f) ? -1 : 1;
+ }
}
return (o1->time->sse < o2->time->sse) ? -1 : 1;
--- /dev/null
+--TEST--
+Comparing datetime objects with negative timestamps should account for microseconds
+--FILE--
+<?php
+
+date_default_timezone_set('UTC');
+$earlyDate1 = DateTime::createFromFormat('U.u', '1.8642')->modify('-5 seconds');
+$earlyDate2 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
+$earlyDate3 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
+
+var_dump($earlyDate1 == $earlyDate2);
+var_dump($earlyDate1 < $earlyDate2);
+var_dump($earlyDate2 > $earlyDate1);
+var_dump($earlyDate2 == $earlyDate3);
+--EXPECT--
+bool(false)
+bool(true)
+bool(true)
+bool(true)