为什么这个PHP日期比较不像我期望的那样?

时间:2014-01-19 15:59:54

标签: php mysql date

我有一个带有日期列表的MySQL数据库。我希望将所有这些日期(如果它们在今天之后发生)输出到页面中。日期以DATE格式存储在数据库中,格式为Y-m-d

我有以下代码(不包括查询等):

$dateToday = date('Y-m-d');

do{
    $dateCompare = new DateTime($row['date']);
    if ($dateCompare > $dateToday){
        echo '<p>'.$dateCompare -> format('Y-m-d').'</p>';
    } else {  
        echo '<p>FALSE</p>';
    }
}while ($row = $stmt->fetch(PDO::FETCH_ASSOC));

但这只是输出所有日期,包括我过去设置的日期用于测试目的。我做错了什么?

4 个答案:

答案 0 :(得分:3)

$dateToday是一个字符串。 $dateCompareDateTime个对象。

答案 1 :(得分:1)

你应该使用strtotime()函数。 http://www.w3schools.com/php/func_date_strtotime.asp

答案 2 :(得分:0)

尝试将日期从myssql转换为datetime对象并输出。

    $changetime = new DateTime($time, new DateTimeZone('UTC'));

    ECHO $changetime->format('m/d/y h:i a');

// list of timezones http://us1.php.net/manual/en/timezones.php

我实际上用它来输出我所有的MYSQL日期时间数据 - 允许我转换为任何时区。请注意,这将假设您的日期时间是UTC - 您应该转换为您的时区。

答案 3 :(得分:0)

$stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach ($stmt as $row) {
    $time = strtotime($row['date']);
    if ($_SERVER['REQUEST_TIME'] - $time) {
        echo '<p>'. date('Y-m-d', $time) . '</p>';
    } else {  
        echo '<p>FALSE</p>';
    }
}