Pruebe las clases DateTime
$dt = new DateTime('2099-01-01');
$dt->setTime(23,59);
$dt->add(new DateInterval('P10D'));
echo $dt->format('Y-m-d H:i:s'); // 2099-01-11 23:59:00
No estoy seguro que DateTime utiliza internamente para almacenar la fecha y hora en lugar de números enteros. Pero los enteros están limitados por el valor de su plataforma para PHP_INT_MAX
. Esto se comprueba con el formato de fecha y hora con la 'U' (por fecha y hora) y se lleva a date()
:
echo date('Y-m-d H:i:s', $dt->format('U')); // 1962-12-06 17:30:44
Note como DateTime
devuelve la fecha y hora correcta, pero date
no se puede trabajar con él:
var_dump(
$dt->format('U'), // 4071855540
date('U', $dt->format('U')), // -223111756
PHP_INT_MAX, // 2147483647
PHP_INT_MAX+1, // -2147483648
date('Y-m-d H:i:s', PHP_INT_MAX), // 2038-01-19 04:14:07
date('Y-m-d H:i:s', PHP_INT_MAX+1) // 1901-12-13 21:45:52
);
Que, para usar más palabras, significa "no funciona con marcas de tiempo". :) –
Gracias Gordon, estoy tratando de entender esta clase de fecha y hora. – user187580
@ user187580 en caso de que se sienta incómodo con las clases, también puede usar los equivalentes de procedimiento. Por ejemplo 'date_create',' date_format', etc. – Gordon