如果天数为0,如何正确删除天数?(约会时间)


function secondsToTime( $seconds )
{
    $dtF = new DateTime( "@0" );
    $dtT = new DateTime( "@$seconds" );
    $r = $dtF->diff( $dtT )->format( "%ad, %hh, %im and %ss" );
    print( $r );
    if( strpos( $r, "0h, ", 0 ) !== false )
        $r = str_replace( "0h, ", "", $r );
    if( strpos( $r, "0d, ", 0 ) !== false )
        $r = str_replace( "0d, ", "", $r );
    return $r;
}

我尝试了此代码,但是事后看来,我意识到这将使50d 5h说55h。我如何最好地删除0天,小时?

具有具有统一结构的字符串更易于使用,这就是为什么我替换"one_answers"用",。
如果重要的话,可以解决。

我爆炸并查看数组每个部分的第一个字符,如果是零,则将其删除。
一旦我发现无零停止循环。
然后爆炸回字符串格式。

function secondsToTime( $seconds )
{
    $dtF = new DateTime( "@0" );
    $dtT = new DateTime( "@$seconds" );
    $r = $dtF->diff( $dtT )->format( "%ad, %hh, %im, %ss" );
    //print( $r );
    $arr = explode(", ", $r);
    Foreach($arr as $key => $val){
        If(substr($val, 0,1) == "0"){
            unset($arr[$key]);
        }Else{
            Break;
        }
    }
    return implode(", ",$arr);
}
Echo secondsToTime( 50+3600*5 );

https://3v4l.org/pirps

您可以使用此返回来获取"one_answers"。

return implode(", ",array_slice($arr,0,count($arr)-1)) . ($seconds > 59 ? " and " : "") . End($arr);

这将添加"one_answers"如果超过59秒,则只输入秒。

最新更新