Try DateTimeclasses
$dt = new DateTime('2099-01-01');
$dt->setTime(23,59);
$dt->add(new DateInterval('P10D'));
echo $dt->format('Y-m-d H:i:s');
Not sure what DateTime uses internally to store timestamps instead of integers. But integers are limited by the value of your platform for PHP_INT_MAX. You can verify this by formatting datetime with "U" (for the timestamp) and passing it to date():
echo date('Y-m-d H:i:s', $dt->format('U'));
, DateTime , date :
var_dump(
$dt->format('U'),
date('U', $dt->format('U')),
PHP_INT_MAX,
PHP_INT_MAX+1,
date('Y-m-d H:i:s', PHP_INT_MAX),
date('Y-m-d H:i:s', PHP_INT_MAX+1)
);