簡體   English   中英

為什么DateTime :: sub無法按預期工作?

[英]Why isn't DateTime::sub working as expected?

由於這個問題的答案,我已經設法僅使用MySQL從MySQL數據庫中輸出將來(即今天之后)的列表日期。 但是,如果我想稍微推遲一下“今天”怎么辦? 換句話說,是否要讓日期不提前一周出現在日期列表中?

我嘗試使用以下代碼使用DateTime::sub ,但是它殺死了我的腳本(我只是得到一個空白屏幕-如果我注釋掉DateTime :: sub行,它將再次起作用。我仍然沒有解決如何獲取PDO來回顯錯誤詳細信息):

$dateToday = new DateTime('now');
$dateToday -> sub(new DateInterval('P7D'));

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));

有任何想法嗎?

您的代碼對我來說很好,我想這行有問題:

$dateCompare = new DateTime($row['date']);

$ row的日期采用什么格式?

我建議使用

$date = DateTime::createFromFormat('The format your dates are in', $row['date']);

有關可能的日期格式,請參見http://www.php.net/manual/zh/function.date.php

例如Ymd會解析2012-10-28


如果您有舊版本的PHP,則可以通過比較字符串來嘗試這種“低技術含量”解決方案。

// Assuming your mysql is Y-m-d
$dateToday = date('Y-m-d')

do{
    if ($row['date'] > $dateToday){
        echo '<p>'.$dateCompare -> format('Y-m-d').'</p>';
    } else {  
        echo '<p>FALSE</p>';
    }
while...

暫無
暫無

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

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