以过程方式评估DateTime :: DIFF对象



我具有一个倒计时功能,该功能(部分)返回"剩余时间",直到给定的日期/时间。该值作为dateinterval对象返回,并使用diff方法计算。

//calculate countdown time
$time_diff = $countdown->diff($current);

鉴于$ time_diff是一个dateinterval对象,我该怎么做?

if ($time_diff > 60) {
    //do stuff
}

我知道上面的代码不起作用,但是我应该/应该如何评估等效条件("在此dateinterval对象中剩下60秒以上")?

问题是脚本使用将"剩下的时间"作为Unix时间戳整数返回,并且该功能通过我的系统中的各种脚本以更加过程的方式使用。

预先感谢您提出的任何有用建议。

您可以从对象中获取单个值:

if ($time_diff->s > 60) {
    //do stuff
}

有关属性的完整列表,请参见DateInterval类结构。但是,我认为您需要查看对象上的每个值(几天,几分钟,年份等),如果您希望使用的总秒数 - 在您的用例中(一个倒数计时器),将它们全部添加起来。差异超过秒,因此可能不需要。

使用格式()。

echo $time_diff->format('%R%a days'); //'days' here, you need to change as you want

另请参见diff。

,因为不可能在dateinterval对象上使用格式()方法直接获得 total ratter 剩余时间秒数,所以我最终添加了我功能中的一个助手,将"左时间"作为Unix Timestamp以及DateInterval对象。

//calculate unix timetamps
$current_ts = time();
$countdown_ts = $countdown->getTimestamp();
$timestamp_diff = ($current_ts < $countdown_ts) ? ($countdown_ts - $current_ts) : 0;

希望这对他人有用。

ps。stackoverflow很棒。

最新更新