我使用下面的代码来确定一年中的员工服务:
$datePay1 = new DateTime($date1);
$datePay2 = new DateTime($date2);
$interval = $datePay1->diff($datePay2);
$vYears = $interval->y;
$vMonths = $interval->m;
$vDays = $interval->d;
$service = $vYears." years, ".$vMonths." months, ".$vDays." days";
Run Code Online (Sandbox Code Playgroud)
情况1:
$date1 = '2016-03-01';
$date2 = '2017-03-01';
Run Code Online (Sandbox Code Playgroud)
服务= 0年,11个月,30天
案例2:
$date1 = '2017-03-01';
$date2 = '2018-03-01';
Run Code Online (Sandbox Code Playgroud)
服务= 1年,0个月,0天
案例1似乎不正确.为什么是这样?是因为2016年是闰年吗?服务器运行PHP v5.6.
尝试这个:
$tz = date_default_timezone_get();
$usa = 'America/Chicago'; // America/*
date_default_timezone_set($usa);
//Case 1:
$date1 = '2016-03-01';
$date2 = '2017-03-01';
//Case 2:
//$date1 = '2017-03-01';
//$date2 = '2018-03-01';
$datePay1 = new \DateTime($date1);
$datePay2 = new \DateTime($date2);
$interval = $datePay1->diff($datePay2);
$vYears = $interval->y;
$vMonths = $interval->m;
$vDays = $interval->d;
$service = $vYears." years, ".$vMonths." months, ".$vDays." days";
print_r($interval); // interval: + 1y
date_default_timezone_set($tz);
Run Code Online (Sandbox Code Playgroud)