PHP日期返回空白年份“2090”与strtotime

时间:2014-03-11 03:17:35

标签: php date strtotime

我有PHP version 5.3.10-1ubuntu3.10

我将日期指定为“2090-11-29 05:00:00”并使用strotime打印并将其与当前日期进行比较。但它返回“空白值”

这是我的代码:

<?php
    $dateTime = "2003-04-19 11:00:00";
    $mdate = strtotime($dateTime);
    $ndateTime = "2090-11-29 05:00:00";
    $ndate = strtotime($ndateTime);

    echo $ndate.' - <br />';

    if(($date > $mdate) && ($date < $ndate)) {
        echo $date.' is greater than  '.$ndate . ' First ';
    } else {
        echo $ndate.' is greater than  '.$date;
    }

    echo '<br />';
    echo phpversion();
?>

2 个答案:

答案 0 :(得分:2)

您可以获得的最长日期是2038,请查看year 2038 problem以获取有关此问题的详细信息。 现在要解决这个问题 - 正如@Mike建议的那样 - 您可以使用DateTime对象,请考虑以下示例:

$date =new DateTime("2090-11-29 05:00:00");
echo $date->format('Y-m-d H:i:s'); //will output 2090-11-29 05:00:00

您可以根据需要设置格式,php documentation中有足够的示例 此外,settimezone还可用于日期时间对象

答案 1 :(得分:1)

您可以使用DateTime,它支持比32位计算机上的常规时间函数更大的日期;它的构造函数支持与strtotime()相同的格式,因此转换应该很简单。

但是,在这种情况下,简单的字符串比较将完成同样的事情,因为Y-m-d H:i:s格式适合比较日期直到Y10k。

$mdateTime = "2003-04-19 11:00:00";
$ndateTime = "2090-11-29 05:00:00";
$date = '2013-03-11';

if ($date > $mdateTime && $date < $ndateTime) {
    // $date is between $mdateTime and $ndateTime
} else {
    echo $ndate.' is greater than  '.$date;
}