tag - Tiempo máximo() | PHP
the_tag() (6)
DateTime también parece usar 32 bits en servidores de 64 bits. Así que te metes en problemas.
Lo he resuelto de esta manera:
new DateTime("99999/12/31 00:00:00");
Debido a que, la fecha desborda la longitud máxima para DateTime, date usa el valor de posibilidad máximo y devuelve un objeto DateTime como este (inspeccionado con var_dump):
object(DateTime)#9 (3) { ["date"]=> string(19) "2031-09-12 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } }
No estoy seguro si difiere con las versiones de PHP. Lo he probado con la versión 5.4.
Es una pregunta un poco tonta, pero cuál sería el valor INT máximo de un time()
y su fecha futura, por ejemplo,
1 de enero de 2999
¿Llegaría el tiempo () a ese valor? Ir por un valor de time()
grande time()
devolvería esto:
Jue 1 de enero de 1970 1:00 AM
Una fecha int normal
1287320788 - salidas fecha de hoy: Sun 17th Oct 2010 2:06 PM
Pero solo tengo curiosidad por la fecha más grande y la última fecha.
El camino más corto que conozco es conseguir la fecha de mañana:
fecha ("Ynj", strtotime ("+ 1 día"))
date("Ynj", PHP_INT_MAX)
en sistemas de 64 bits da un valor potencialmente peligroso: 292277026596-12-4
En plataformas de 64 bits, PHP_INT_MAX
no refleja el valor INT máximo para plataformas de 32 bits. Aquí está cómo conseguirlo:
$max32bitInt = PHP_INT_SIZE == 4 ? PHP_INT_MAX : PHP_INT_MAX>>32;
Si siempre estás usando una plataforma de 64 bits, solo usa:
PHP_INT_MAX>>32
PHP almacena el número entero más alto que puede representar en la constante PHP_INT_MAX
:
date(''Y-m-d H:i:s'', PHP_INT_MAX); // 2038-01-19 04:14:07
Si desea trabajar con fechas más allá de eso, considere usar la API DateTime , por ejemplo,
$dt = new DateTime(''1st January 2999'');
$dt->add(DateInterval::createFromDateString(''+1 day''));
echo $dt->format(''Y-m-d H:i:s''); // 2999-01-02 00:00:00
echo $dt->format(''U''); // 32472226800
Recuerde, el problema Y2038 no se aplica en sistemas de 64 bits.