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天,几小时?
答案 0 :(得分:0)
拥有统一结构的字符串更容易使用,这就是我将“和”替换为“,”的原因。
如果这很重要,可以修复。
我爆炸并查看数组每个部分的第一个字符,如果它是零,则删除它。
一旦我发现无零停止循环
然后内爆回字符串格式。
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 );
您可以使用此返回来获取“和”。
return implode(", ",array_slice($arr,0,count($arr)-1)) . ($seconds > 59 ? " and " : "") . End($arr);
如果超过59秒,则会添加“和”,否则只输入秒数。