PHP中计算两个日期之差的问题

计算两个日期之差的:

$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天了么,哎~~~~~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值