PHP 比较日期 <= 和 >= 无法正常工作



我正在尝试比较两个类型为 d/m/y 的日期字符串,但似乎比较该类型日期的某些内容不起作用。我想使用DateTime PHP的函数,但起初我想了解为什么上面的脚本不起作用。

这是代码:

public function listActiveNews(){
    $today = strtotime(date('d/m/Y'));
    $db = mysql_init();
    $sql = "SELECT * FROM ph_news WHERE newActive = 1";
    $prq = $db->prepare($sql);
    $prq->execute();

    foreach($prq->fetchAll(PDO::FETCH_ASSOC) as $fetch){
        $dateFrom = strtotime($fetch['newsDateFrom']);
        $dateUntil = strtotime($fetch['newsDateUntil']);
        if ( ($today >= $dateFrom) && ($today <= $dateUntil) ){
            print date('d/m/Y') . " >= " . $fetch['newsDateFrom'] .
                  " && " . date('d/m/Y') . " <= " .
                  $fetch['newsDateUntil'] ."<br>" ;
            print $fetch['Title'];
        }
    }
}

我得到了这个结果,我不明白为什么这些日期的比较在if子句中返回 TRUE。

输出:

28/

02/2014>= 20/03/2014 && 28/02/2014 <= 27/02/2014
标题

以下是日期值:

date('d/m/Y') = 28/02/2014
$newsDateFrom = 20/03/2014
$dateUntil  = 27/02/2014

真的...停止滥用日期系统。 $today = strtotime(date('d/m/Y'));完全没有意义。 $today = time()是不太复杂且效率更高的版本。

另外,为什么你可以在PHP中进行时间过滤,而你可以简单地在MySQL中进行过滤?

SELECT *
FROM ph_news
WHERE (newActive = 1) AND (curdate() BETWEEN newsDateFrom AND newsDateUntil)

将仅获取您实际想要的记录。现在,您几乎获取了整个表,然后扔掉了除您真正想要的少数记录之外的几乎所有内容。

相关内容

  • 没有找到相关文章