if if语句为PHP DateTime diff

时间:2018-02-28 02:58:18

标签: php wordpress if-statement

我使用meta_box值(YmdHi)current Date&time来打印时差。这段代码对我有用。

此外,我还要在剩下2小时后打印Live来开始活动。

我打印if or else时出现的错误目前这对我不起作用?

$then = date( get_post_meta( get_the_ID(), '_start_eventtimestamp', true ) ) ;
$then = new DateTime($then);
$now = new DateTime();
$sinceThen = $then->diff($now);

if ($sinceThen > 2 * HOUR_IN_SECONDS){
       echo $sinceThen->d.'days'; 
       echo $sinceThen->h.'hours'; 
       echo $sinceThen->i.'minutes';
 }
else{
        echo 'LIVE';
 }

1 个答案:

答案 0 :(得分:1)

$sinceThenDateInterval(这是DateTime::diff()返回的内容),因此您将intobject进行比较,这显然会让您意外结果。要以秒为单位获得差异,请减去DateTime个实例的时间戳(使用DateTime::getTimestamp()获得):

$then = date( get_post_meta( get_the_ID(), '_start_eventtimestamp', true ) ) ;
$then = new DateTime($then);
$now = new DateTime();
$sinceThen = $then->diff($now);
$sinceThenInSeconds = $then->getTimestamp() - $now->getTimestamp();

if ($sinceThenInSeconds > 2 * HOUR_IN_SECONDS){
    echo $sinceThen->d.'days'; 
    echo $sinceThen->h.'hours'; 
    echo $sinceThen->i.'minutes';
}
else{
    echo 'LIVE';
}