如果小时和分钟在提供的函数中为零,则隐藏它们


Hide hours and mins if they are zero in the function provided

下面的函数输出小时:0无论时间是<1小时或分钟:当mins<1.

如何只显示不为零的变量?

谢谢。

function time_difference($endtime){
    $hours =date("G",$endtime);
    $mins =date("i",$endtime);
    $secs =date("s",$endtime);
    $diff="'hours': ".$hours.",'mins': ".$mins.",'sec': ".$secs;
    return $diff;
}   
$end_time =strtotime("+7 hours") - strtotime($entry->pubDate);
$difference = time_difference($end_time);
echo $difference;

另一种可能的方法:

function time_difference($endtime){
    $times=array(
        'hours' => date("G",$endtime),
        'mins' => date("i",$endtime),
        'secs' => date("s",$endtime),
    );
    //added a "just a moment ago" feature for you
    if (intval($times['hours'], 10) == 0 
           && intval($times['mins'], 10) == 0) {
        return "just a moment ago";
    } 
    $diff='';
    foreach ($times as $k=>$v) {
        $diff.=empty($diff) ? '' : ',';
        $diff.=intval($v, 10) == 0 ? '' : "'$k':$v";
    }
    return $diff;
}   

使用?操作人员

$diff=($hours > 0) ? "'hours': ".$hours : "";
$diff=$diff.($minutes > 0) ? etc...

对于较大的时间范围,您最好使用数学而不是date():

function time_difference($endtime){
    // hours can get over 23 now, $endtime is in seconds
    $hours = floor($endtime / 3600);
    // modulo (%) already rounds down, not need to use floor()
    $mins = $endtime / 60 % 60;
    // the remainder of $endtime / 60 are seconds in a minute
    $secs = $endtime % 60;
    // this array holds the hour, minute and seconds if greater than 0
    $diff = array();
    if ($hours) $diff[] = "'hours': $hours";
    if ($mins) $diff[] = "'mins': $mins";
    if ($secs) $diff[] = "'sec': $secs";
    // join the values with a comma
    $diff = implode(',', $diff);
    if (!$diff) { // hours, mins and secs are zero
        $diff = "just a moment ago";
    }
    return $diff;
}

以下函数将只返回0-23之间的小时数。如果时间超过一天,小时数将变为零:

function time_difference($endtime){
    $hours = (int)date("G",$endtime);
    $mins = (int)date("i",$endtime);
    $secs = (int)date("s",$endtime);
    // this array holds the hour, minute and seconds if greater than 0
    $diff = array();
    if ($hours) $diff[] = "'hours': $hours";
    if ($mins) $diff[] = "'mins': $mins";
    if ($secs) $diff[] = "'sec': $secs";
    // join the values with a comma
    $diff = implode(',', $diff);
    if (!$diff) { // hours, mins and secs are zero
        $diff = "just a moment ago";
    }
    return $diff;
}

需要CCD_ 2将CCD_ 3返回的字符串转换为字符串。"01"变为1,"00"变为"0"。