繁体   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