From Apr 13 to May 12, including the last day, the day difference would be 30 days.
But if I use date_diff
, I get only 29 days. How do I include the last day? Do I simply add one more day or is there a more elegant solution?
yes you need to include at the last day like you provided link of 30 day because in php date_diff no issue , please again check your reference link there is also option like include end date in calculation (1 day is added)
PHP date_diff not include last day in calculation default so you need to specify it manual
php date_diff no issue because I have added belo four sample to also calculate date different
note: in below example also need to add one more day if need
#1 example
$date1 = date_create('2022-04-13');
$date2 = date_create('2022-05-12');
$dateDifference = date_diff($date1, $date2)->format('%y years, %m months and %d days');
echo $dateDifference;
#2 example
$date1 = date_create('2022-04-13');
$date2 = date_create('2022-05-12');
$diff=date_diff($date1,$date2);
$months = $diff->format("%m months");
$years = $diff->format("%y years");
$days = $diff->format("%d days");
echo $years .' '.$months.' '.$days;
#3 example
$date1 = date_create('2022-04-13');
$date2 = date_create('2022-05-12');
$diff1 = date_diff($date1,$date2);
print_r($diff1);
#4 example
$date1 = '2022-04-13';
$date2 = '2022-05-12';
$diff = abs(strtotime($date2) - strtotime($date1));
$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
printf("%d years, %d months, %d days\n", $years, $months, $days);