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