php - 为什么 DateTime::sub 没有按预期工作?

标签 php mysql datetime pdo

多亏了这个问题的答案,我才设法使用 PHP 从我的 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/en/function.date.php可能的日期格式

例如Y-m-d 将解析 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...

关于php - 为什么 DateTime::sub 没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219706/

相关文章:

php - 获取最近过去的星期六(上星期六)

php - MySQL:十进制数据类型的大小

php - 获取本月的最后一天?

Javascript:在不涉及日期的情况下查找两个 'time' 字符串之间的时间差

php - 实现接口(interface)和自动加载类

php - 使用Xampp,php的 session 超时不起作用

mysql - 在 MySQL 中,跟踪表中更改(添加列)的时间戳的最佳方法是什么?

php - 任何人都可以解释以下 PHP 代码吗?

mysql - 在mysql中获取24小时后的日期

javascript - 通过 AJAX 检索 PHP JSON 数据 - 数据请求的正确结构