bug-gh8964-002.phpt 953 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. --TEST--
  2. Test for bug GH-8964: DateTime object comparison after applying delta less than 1 second
  3. --INI--
  4. date.timezone=UTC
  5. --FILE--
  6. <?php
  7. for ($seconds = 0; $seconds < 3; $seconds++)
  8. {
  9. $actual = new DateTimeImmutable("2022-07-21 15:00:10");
  10. $delta = new \DateInterval(sprintf('PT%dS', $seconds));
  11. $delta->f = -0.9;
  12. $expectedLower = $actual->sub($delta);
  13. $expectedUpper = $actual->add($delta);
  14. echo $expectedLower->format( 'H:i:s.u U' ), "\n";
  15. echo $actual ->format( 'H:i:s.u U' ), "\n";
  16. echo $expectedUpper->format( 'H:i:s.u U' ), "\n";
  17. var_dump($actual < $expectedLower, $actual > $expectedUpper);
  18. }
  19. ?>
  20. --EXPECTF--
  21. 15:00:10.900000 1658415610
  22. 15:00:10.000000 1658415610
  23. 15:00:09.100000 1658415609
  24. bool(true)
  25. bool(true)
  26. 15:00:09.900000 1658415609
  27. 15:00:10.000000 1658415610
  28. 15:00:10.100000 1658415610
  29. bool(false)
  30. bool(false)
  31. 15:00:08.900000 1658415608
  32. 15:00:10.000000 1658415610
  33. 15:00:11.100000 1658415611
  34. bool(false)
  35. bool(false)