2

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

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

鉴于 $time_diff 是 DateInterval 对象,我该怎么做?

if ($time_diff > 60) {

    //do stuff

}

我知道上面的代码不起作用,但是我如何/应该评估等效条件(“此 DateInterval 对象中还剩 60 多秒”)?

问题是脚本用于将“剩余时间”作为 Unix 时间戳整数返回,并且我系统中的大量脚本以更程序化的方式使用该函数。

提前感谢您提供任何有用的建议。

4

3 回答 3

2

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

if ($time_diff->s > 60) {

    //do stuff

}

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

于 2012-12-19T14:41:36.127 回答
1

使用格式()

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

另见差异

于 2012-12-19T14:39:09.417 回答
0

因为不可能在 DateInterval 对象上使用 format() 方法来直接获取以秒为单位的剩余时间总量,所以我最终在我的函数中添加了一个帮助器,以将“剩余时间”作为 Unix 时间戳返回DateInterval 对象。

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

希望这对其他人有用。

PS。Stackoverflow 很棒。

于 2012-12-19T15:51:01.213 回答