我的日期功能得到了意想不到的结果。例如
$date = '25-05-2049';
echo '<p>'.date('Y-m-d',strtotime($date)).'</p>'; // Showing 1970-01-01
但这是正确的
$date = '25-05-2029';
echo '<p>'.date('Y-m-d',strtotime($date)).'</p>'; // 2029-05-25
为什么第一个不正确?
答案 0 :(得分:9)
在32位PHP strtotime()
无法处理2038 problem。 Source
如果以两位数格式指定年份编号,则00-69之间的值将映射到2000-2069和70-99到1970-1999。请参阅下面的注释,了解32位系统的可能差异(可能的日期可能会在2038-01-19 03:14:07结束)。
因此要么使用64位版本的PHP,要么使用DateTime()
来处理日期。
$date = new DateTime('25-05-2049');
echo '<p>'.$date->format('Y-m-d').'</p>';