PHP将日期间隔diff转换为十进制

时间:2012-05-28 00:56:35

标签: php datetime datediff

我正在尝试将两个日期之间的差异转换为总年数,现在我正在使用它:

 $datetime1 = new DateTime('2009-10-11'); 
 $datetime2 = new DateTime('2010-10-10');
 $interval = $datetime1->diff($datetime2);
 return $interval->format('%y');

这会返回一个int(比如0表示<比一年,2表示两年,等等)

我需要结果为十进制,如下所示:

0.9 - 9个月

1.2 - 1年零2个月

3.5 - 3年零5个月

依旧......

谢谢!

2 个答案:

答案 0 :(得分:5)

如果你不关心完美的准确性:

return $interval->days / 365;

您也可以执行return $interval->y + $interval->m / 12 + $interval->d / 365

之类的操作

在我看到@ 2unco的评论之前,甚至没有注意到你的奇怪的十进制约定。这看起来像是:return $interval->y . '.' . $interval->m

答案 1 :(得分:0)

更简单,更准确的间隔转换器到天/小时/分钟/秒:

function DateDiffInterval($sDate1, $sDate2, $sUnit='H') {
//subtract $sDate2-$sDate1 and return the difference in $sUnit (Days,Hours,Minutes,Seconds)
    $nInterval = strtotime($sDate2) - strtotime($sDate1);
    if ($sUnit=='D') { // days
        $nInterval = $nInterval/60/60/24;
    } else if ($sUnit=='H') { // hours
        $nInterval = $nInterval/60/60;
    } else if ($sUnit=='M') { // minutes
        $nInterval = $nInterval/60;
    } else if ($sUnit=='S') { // seconds
    }
    return $nInterval;
} //DateDiffInterval