簡體   English   中英

PHP比較日期<=和> =不能正常工作

[英]PHP compare dates <= and >= doesn't work properly

我正在嘗試比較兩個類型為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。

輸出:

2014年2月28日> = 2014年3月20日&& 2014年2月28日<= 2014年2月27日
標題

以下是日期值:

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

真的...停止濫用日期系統。 $today = strtotime(date('d/m/Y')); 毫無意義。 $today = time()是復雜程度較低且效率更高的版本。

另外,為什么只可以在MySQL中進行時間過濾,卻為什么要在PHP中進行時間過濾?

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

將僅獲取您實際想要的記錄。 現在,您將獲取整個表的幾乎所有內容,然后丟棄除您真正想要的幾條記錄以外的大多數所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM