用于 PHP 代码的 DATEDIFF 创建函数


DATEDIFF creating function for php code

我正在尝试将以下 MYSQL SELECT 代码转换为 php 代码: DATEDIFF(date, NOW()) <= 31基本上,如果日期小于或等于 31 天,剩下的就做。

到目前为止,我所做的是以下内容

$today = new DateTime('now');
$date = $row['date'];
$diff = date_diff($date,$today);

比里面如果周期我有条件:if ($diff <= 31)

我的 Sql 日期列仅指定为日期而不是日期时间我收到以下错误,我想知道如何仅计算日期

Warning: date_diff() expects parameter 1 to be DateTime, string given in D:'xampp'htdocs'website'c.php on line 299
bool(false) 
Warning: date_diff() expects parameter 1 to be DateTime, string given in D:'xampp'htdocs'website'c.php on line 299
bool(false)

使答案不起作用的其他信息是,在我的SQL查询中,我用DATE_FORMAT(date,'%d %b %Y') as date预先格式化了日期

任何帮助将非常受欢迎。谢谢!

在对

数据库数据进行date_diff()之前,还需要将数据库数据转换为DateTime对象。

$today = new DateTime('now');
$date = new DateTime($row['date']);
$diff = date_diff($date,$today);

现在意识到,由于$diff是一个DateInterval对象,并且您只关心天数组件,因此您可以像这样评估:

if ($date->days <= 31) {
    // do something
}

尝试:

$today = new DateTime('now');
$date = new DateTime($row['date']);
$diff = $date->diff($today)->days;

date_diff期望这两个参数都是 DateTime 对象。这就是它所抱怨的。date_diff或 Datetime::d iff 返回 DateInterval,则可以从 days 成员变量中获取天数

这是算法:

    $then = new DateTime('2010-05-30');//example, you could use $row['date']
    $now = new DateTime();//now
    $delta = $now->diff($then);
    $data = array(
        'year' => $delta->y,
        'month' => $delta->m,
        'day' => $delta->d,
        'hour' => $delta->h,
        'minute' => $delta->i,
        'second' => $delta->s
    );
    //now 
    if($data['day'] <= 31)
    {
       //do the stuff
    }