我使用下面的代码报告我的Wordpress网站中的帖子过期所需的时间,即我在自定义字段中定义的过期值(过期)。
从这段代码中,我保留了一个将在大约四小时后过期的帖子,不会以这种方式显示信息:"在0天,4小时49分钟后到期。"
我不希望" 0天"显示,只剩下剩余的小时数。如果帖子在第二天过期,那么好,可以正常显示"在1天,4小时49分钟到期。"
此外,有些帖子我没有定义到期日期,它们都显示以下信息:" 0天,2小时0分钟到期。"如何显示"未确定到期"等信息。对于这些帖子?
<?php
$date_now = date( 'm/d/Y H:i:s', current_time( 'timestamp', 0 ) );
$date_expire = get_field('expiration');
$now = new DateTime($date_now);
$expires = new DateTime($date_expire);
$diff = $expires->diff($now)->format("%a days, %h hours and %i minutes");
if ($now < $expires) {
echo "Expires em $diff", PHP_EOL;
}
else if ($now >= $expires) {
echo "Expired!", PHP_EOL;
}
else {
echo "", PHP_EOL;
}
?>
答案 0 :(得分:1)
使用此代码:
$now = new DateTime( $date_now );
$expires = new DateTime( $date_expire );
$diff = $expires->diff($now);
if( $diff->days ) $diff = $diff->format( "%a days, %h hours and %i minutes" );
else $diff = $diff->format( "%h hours and %i minutes" );
->days
是唯一的绝对DateTime
属性。
如果您希望仅在差异小于1小时时显示分钟,则可以通过以下方式更改上述代码:
if( $diff->days ) $diff = $diff->format( "%a days, %h hours and %i minutes" );
elseif( $diff->h ) $diff = $diff->format( "%h hours and %i minutes" );
else $diff = $diff->format( "%i minutes" );