PHP:检查日期时间,看看它是否会出现

时间:2012-09-08 05:07:40

标签: php sql date datetime

我从数据库中获取了DATETIME,我需要能够检查该日期是否在30天之内。

$renewal_date = $row['renewal_date'];
$current_time = new DateTime();
$interval = $renewal_date->diff($current_time);

这对我来说不起作用。

4 个答案:

答案 0 :(得分:2)

尝试这样的事情

$renewal_date = new DateTime($row['renewal_date']);
$cutoff= new DateTime('+31 days 00:00');


if ($renewal_date < $cutoff && $renewal_date >= new DateTime)
    echo 'Renewal Time!';
else
    echo 'All OK!';

删除&amp;&amp;条件,如果您想要显示过去的日期续订

答案 1 :(得分:0)

$renewal_date = strtotime($renewal_date); // maybe need it depending of sql format of date

if (abs($renewal_date - time()) < 86400*30)
{
    echo 'less than 30 days from now';
}

编辑1

abs($renewal_date - time())从现在开始(time())给出一个时间长度,它应该指向未来。事实上,这种情况也可能适用于过去的时期......

< 86400*30说lapsus必须低于30天......

这是我原因的2美分:)

答案 2 :(得分:0)

你确定$ row [&#39; renewal_date&#39;]是一个DateTime对象吗?

我的印象是,这是您从数据库而不是DateTime对象获取的值。

尝试使用var_dump($ renewal_date),如果这是包含日期值的字符串,则应使用以下内容:

$renewal_date = new DateTime ($row['renewal_date']);
$current_time = new DateTime();
$interval = $renewal_date->diff($current_time);

答案 3 :(得分:0)

$renewal_date不是PHP DateTime对象。您可以var_dump($renewal_date);进行验证。

查看DateTime::diff手册以获取示例。您将要使用以下内容将日期转换为DateTime对象:

$datetime1 = new DateTime($renewal_date);

然后它应该工作。