我正在尝试将两个日期之间的差异转换为总年数,现在我正在使用它:
$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个月
依旧......
谢谢!
答案 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