php 获取2个时间戳的相差时间段 自定义函数 相隔几年几个月几天

猪猪那么可爱你们能不能炖香一点

 

直接计算2个时间戳的时间段,比如入职了多久

// 参数都是时间戳,也可以自己改一下,改成时间字符串,最后一个参数是返回格式
function calDiffDate($endTime = 0, $startTime = 0, $formate='Y-m') {
        // 防止转参数传错了
        if( $endTime < $startTime ) {
            $temp = $endTime;
            $endTime = $startTime;
            $startTime = $endTime;
        }
        $startDay = date('Y-m-d', $startTime);
        $endDay = date('Y-m-d', $endTime);

        $list1 = list($Y1, $m1, $d1) = explode('-', $startDay);
        $list2 = list($Y2, $m2, $d2) = explode('-', $endDay);

        $data['Y'] = $Y2 - $Y1;
        $data['m'] = (int) $m2 - (int) $m1;
        $data['d'] = (int) $d2 - (int) $d1;

        if( $data['d'] < 0 ) {
            $data['d'] += (int) date('t',strtotime("-1 month $startDay"));
            $data['m']--;
        }

        if( $data['m'] < 0 ) {
            $data['m'] += 12;
            $data['Y']--;
        }

        $formateData = explode('-', $formate);

        $diffStr = '';
        foreach ($data as $key => $val) {
            if( $val > 0 && in_array($key, $formateData) ) {
                switch ($key) {
                    case 'Y':
                        $diffStr .= $val.'年';
                        break;
                    case 'm':
                        $diffStr .= $val.'月';
                        break;
                    default:
                        $diffStr .= $val.'日';
                        break;
                }
            }
        }

        return $diffStr;
    }

 

  //  示例 

 

 

执行结果

 

posted @ 2021-08-25 08:54  方达达  阅读(243)  评论(0编辑  收藏  举报