计算两个日期之差的:
$date1 = '2008-01-01';
$date2 = '2009-03-01';
使用php代码实现计算date1和date2相差了几年几月几日。
我是这样实现的
function calTime($d1, $d2){
$d1 = strtotime($d1);
$d2 = strtotime($d2);
if($d1 > $d2){
$d1 += $d2;
$date2 = $d1 - $d2;
$d1 -= $d2;
}
$date1 = explode('-', $d1);
$date2 = explode('-', $d2);
$sub = array();
if($date2['d'] < $date1['d']){
$date2['m'] -= 1;
if($date2['m'] <= 0){
$date2['m'] = 12;
$date2['y'] -= 1;
}
$ym = $date2['y'] . '-' . $date2['m'];
$date2['d'] += date('t',strtotime($ym));
}
$sub['d'] = $date2['d'] - $date1['d'];
if($date2['m'] < $date1['m']){
$date2['y'] -= 1;
$date2['m'] += 12;
}
$sub['m'] = $date2['m'] - $date1['m'];
$sub['y'] = $date2['y'] - $date1['y'];
return ($sub['y'] >= 1 ? $sub['y'] . '年') . ($sub['m'] >= 1 ? $sub['m'] . '月') . ($sub['d'] >= 1 ? $sub['d'] . '日');
}
但是一个做PHP很牛的朋友告诉我这样太烦了,只要把两个日期转化为UNIX时间戳,然后两个时间相减就可以得出两个日期相差的秒数,然后这个值除以365*24*3600就是相差的年数,然后余数除以30*24*3600得出的就是月数,余数便是日数。。。
但是2010-03-01和2010-04-01岂不是相差了1个月另1天了么,哎~~~~~~