bug52062.phpt 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. --TEST--
  2. Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (32 bit)
  3. --SKIPIF--
  4. <?php
  5. if (PHP_INT_SIZE != 4) die('skip 32-bit only');
  6. ?>
  7. --INI--
  8. date.timezone=UTC
  9. --FILE--
  10. <?php
  11. $d = new DateTime('@100000000000');
  12. var_dump($d->format('Y-m-d H:i:s U'));
  13. try {
  14. var_dump($d->getTimestamp());
  15. } catch (\ValueError $e) {
  16. echo $e->getMessage() . \PHP_EOL;
  17. }
  18. var_dump($d->format('U'));
  19. try {
  20. $d->setTimestamp(100000000000);
  21. } catch (TypeError $e) {
  22. echo $e->getMessage(), "\n";
  23. }
  24. var_dump($d->format('Y-m-d H:i:s U'));
  25. try {
  26. var_dump($d->getTimestamp());
  27. } catch (\ValueError $e) {
  28. echo $e->getMessage() . \PHP_EOL;
  29. }
  30. $i = new DateInterval('PT100000000000S');
  31. var_dump($i->format('%s'));
  32. ?>
  33. --EXPECT--
  34. string(32) "5138-11-16 09:46:40 100000000000"
  35. Epoch doesn't fit in a PHP integer
  36. string(12) "100000000000"
  37. DateTime::setTimestamp(): Argument #1 ($timestamp) must be of type int, float given
  38. string(32) "5138-11-16 09:46:40 100000000000"
  39. Epoch doesn't fit in a PHP integer
  40. string(10) "1215752192"