php日期函数的意外结果

Sam*_*Sam 1 php date

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

    $date = '25-05-2049';
    echo '<p>'.date('Y-m-d',strtotime($date)).'</p>'; // Showing 1970-01-01
Run Code Online (Sandbox Code Playgroud)

但这是正确的

    $date = '25-05-2029';
    echo '<p>'.date('Y-m-d',strtotime($date)).'</p>'; // 2029-05-25
Run Code Online (Sandbox Code Playgroud)

为什么第一个不正确?

Joh*_*nde 9

在32位PHP strtotime()无法处理2038问题.来源.

如果以两位数格式指定年份编号,则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>'; 
Run Code Online (Sandbox Code Playgroud)

演示