您现在的位置是:网站首页 > 心得笔记

获取两个日期相差年、月、日

盛悦2018-12-12528人围观
简介在日常需求中,经常需要我们根据两个日期,去获取其天数差、月数差或者年数差。这就需要写一个公共方法,以在需要的地方调用

 

如上图所示:选择日期类型,选择日时,日期格式是Y-m-d格式;选择月时,日期格式是Y-m格式;选择年时,日期格式是Y格式。在去获取想差年月日差

 

这里获取时间差,就可用如下方法:

function diffBetweenTwoDays ($day1, $day2, $type) {
        $second1 = strtotime($day1);//转换日期格式为时间戳
        $second2 = strtotime($day2);

        //判断两日期大小,并交换之,使day1>day2
        if ($second1 < $second2) {
            $tmp = $second2;
            $second2 = $second1;
            $second1 = $tmp;
        }

        if ($type == 1) {//相差天数
            return ($second1 - $second2) / 86400;//日24*60*60=86400
        } elseif ($type == 2) {//相差月数
            return ($second1 - $second2) / 2592000;//月24*60*60*30=2592000
        } else {
            return $second1 - $second2;//年24*60*60*30*12=31104000
        }
    }

 

调用如下:

//相差天数

$j = $this->diffBetweenTwoDays($endDate, $startDate,1);
$days = ($j + 1).'天';

//相差月数

$j = $this->diffBetweenTwoDays($startDate, $endDate,2);
$j = intval($j);
$days = ($j + 1).'个月';

//相差年数


$j = $this->diffBetweenTwoDays($startDate, $endDate,3);
$days = ($j + 1).'年';