我有一个网站,用户提供一些日期,但如果他们进入年份,如2099年4月12日,那么我得到过去的日期(1969年).如何检查并应用默认的最大安全日期?
谢谢.
试试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
Run Code Online (Sandbox Code Playgroud)
不确定DateTime在内部使用什么来存储时间戳而不是整数.但是整数受到平台价值的限制PHP_INT_MAX.您可以使用'U'(对于时间戳)格式化日期时间并将其传递给date():
echo date('Y-m-d H:i:s', $dt->format('U')); // 1962-12-06 17:30:44
Run Code Online (Sandbox Code Playgroud)
请注意如何DateTime返回正确的时间戳但date无法使用它:
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
);
Run Code Online (Sandbox Code Playgroud)