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秒,则只输入秒。