핵심 방법
public function diffDate($date1, $date2)
{
if (strtotime($date1) > strtotime($date2)) {
$tmp = $date2;
$date2 = $date1;
$date1 = $tmp;
}
list($Y1, $m1, $d1) = explode('-', $date1);
list($Y2, $m2, $d2) = explode('-', $date2);
$Y = $Y2 - $Y1;
$m = $m2 - $m1;
$d = $d2 - $d1;
if ($d < 0) {
$d += (int)date('t', strtotime("-1 month $date2"));
$m--;
}
if ($m < 0) {
$m += 12;
$Y--;
}
$end_month_start_day = date('Ym01', strtotime($date2));
$end_month_end_day = date('Ymd', strtotime("{
$end_month_start_day} + 1 month -1 day"));
$end_month_day = range($end_month_start_day, $end_month_end_day, 1);
if ($d >= count($end_month_day)) {
$m = $m + 1;
$d = $d - count($end_month_day);
}
return array('year' => $Y, 'month' => $m, 'day' => $d);
}
옮기다
$res = $this->diffDate('2022-01-05', '2023-01-05');
dump($res);die;