php日期函数的意外结果

时间:2017-09-26 11:47:47

标签: php date

我的日期功能得到了意想不到的结果。例如

    $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

为什么第一个不正确?

1 个答案:

答案 0 :(得分:9)

在32位PHP strtotime()无法处理2038 problemSource

  

如果以两位数格式指定年份编号,则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>'; 

Demo