Php 以过程方式评估DateTime::diff对象

Php 以过程方式评估DateTime::diff对象,php,datetime,Php,Datetime,我有一个倒计时函数,它(部分)返回给定日期/时间之前的“剩余时间”。该值作为DateInterval对象返回,并使用diff方法计算 //calculate countdown time $time_diff = $countdown->diff($current); 既然$time_diff是一个DateInterval对象,我该如何做呢 if ($time_diff > 60) { //do stuff } 我知道上面的代码不起作用,但我应该如何评估等效条件(“此

我有一个倒计时函数,它(部分)返回给定日期/时间之前的“剩余时间”。该值作为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

}

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

因为不可能使用格式()方法来直接获取剩余时间的总量(以秒为单位),最后我在函数中添加了一个助手,将“剩余时间”作为Unix时间戳与DateInterval对象一起返回

//calculate unix timetamps
$current_ts = time();
$countdown_ts = $countdown->getTimestamp();
$timestamp_diff = ($current_ts < $countdown_ts) ? ($countdown_ts - $current_ts) : 0;
//计算unix时间戳
$current_ts=时间();
$countdown\u ts=$countdown->getTimestamp();
$timestamp\u diff=($current\u ts<$countdown\t)?($倒计时-$当前时间):0;
希望这对其他人有用


PS.Stackoverflow真是太棒了。

是$time\u diff真的是一个DateTime对象,还是更合适的DateInterval对象对不起,你是对的:它是一个DateInterval对象而不是DateTime对象。但是是否可以使用format()方法以秒为单位获取剩余的总时间?不是直接,请参阅:在这种情况下,时间差可能是几个月。因此,我需要获得以秒为单位的总剩余时间,而不是DateInterval对象中秒的单个值。这可能是一种方式:(),但在这种情况下,我可能会转换回Unix时间戳。
//calculate unix timetamps
$current_ts = time();
$countdown_ts = $countdown->getTimestamp();
$timestamp_diff = ($current_ts < $countdown_ts) ? ($countdown_ts - $current_ts) : 0;