用巨大的秒值格式化 DateInterval

Formatting DateInterval with huge seconds value

最近我运行陷入了一个简单的DateInterval问题。在我创建具有巨大秒值的 DateInterval 对象后,class 不会重新计算其属性,如下所示:

$interval = new DateInterval('PT6685071S');
echo $interval->format("%m months %d days %H hours %i minutes %s seconds");

输出变为:

0 months 0 days 00 hours 0 minutes 6685071 seconds

如何让它显示成这样:

2 months 16 days 8 hours 57 minutes 51 seconds

不将秒除以 60,将分钟除以 60,等等 ?

(希望我的计算是正确的)

这可以通过 DateTime 实现 class

使用:

echo secondsToTime(1640467);

18天23小时41分7秒

函数:

function secondsToTime($seconds) {
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}

sample demo