php 两个日期的相差几个月如果计算?例如:2012-02-15和2013-05-13相差几个月?

如题所述

第1个回答  2013-05-13
其实我觉得可以更简单点,如下:

$date1='2012-12-31';
$date2='2013-05-22';

echo cmonth($date2,$date1);

function cmonth($date1,$date2)
{
$data1= explode('-',$date1);
$data2 =explode('-',$date2);

$year1 = $data1[0];
$month1 = $data1[1];

$year2 = $data2[0];
$month2 = $data2[1];

$result = $year1*12 + $month1 - $year2*12 -$month2 +1;

echo $result;

测试通过追问

谢谢!

第2个回答  推荐于2020-12-05
你这几个月,日期不相同,的时候是不是,要整个1.5个月?追问

无论从几号开始,都算一个月,按自然月算,不是满三十天才算一个月,比如说:2012-12-31到2013-05-22,12月,1月,2月,3月,4月,5月,一共是6个月,php怎么计算?

追答

$date1='2012-12-31';
$date='2013-05-22';
echo ctime($date1, $date);
function ctime($date1, $date)
{
$time = strtotime($date);
$y = date("Y", $time);
$m = date("m", $time);
$d = date("d", $time);

$time1 = strtotime($date1);
$_y = date("Y", $time1);
$_m = date("m", $time1);
$_d = date("d", $time1);

if ($y == $_y)
{
$m1 = $m - $_m;
}
else
{
$m1 = $m + (12 - $_m);
}

if ($d >= $_d)
{
$d1 = $d - $_d;
}
else
{
$m1 --;
$t1 = date("t");
$d1 = $d + ($t1 - $_d);
}
if($d1>0){
return $m1+1;
}else{
return $m1;
}
}

本回答被提问者采纳
第3个回答  2013-05-13
这个可能要再细一点了 通过strtotime计算时间差,$time / 86400算出多少天。
如果一个月算30天的话 再除以30。
相似回答