728x90

strtotime()는 두 날짜를 UNIX 시간으로 변환하고 그로부터 초 수를 계산한다.

먼저 new DateTime()을 사용하여 날짜를 선언한다. 
그런 다음 첫 번째 날짜의 DateInterval() 오브젝트 diff()를 사용하여 차이의 정수 값을 가져오고 두 번째 날짜를 매개 변수로 전달한다. 년은 y 객체를 사용, 월은 m 객체, 일은 d 객체를 사용하면 된다.

<?php
$firstDate  = new DateTime("2022-01-01");
$secondDate = new DateTime("2022-04-24");
$intvl = $firstDate->diff($secondDate);
 
echo $intvl->y . " 년, " . $intvl->m." 월 and ".$intvl->d." 일";
 
// 날짜수를 계산
echo $intvl->days . " days ";
?>

 

DB와 연동하여 신청일자, 폐지일자 데이터를 가져와서 유형을 구분하고 DB 저장하기 위한 로직 예제이다.

<?php
 
$sql = "select * from customer ";
$result =  mysqli_query($db$sql);
while($R = mysqli_fetch_array($result)){
 
    $regdate = preg_replace("/[^0-9]/","",$R['reg_date']);
    $revodate  = preg_replace("/[^0-9]/","",$R['revo_date']);
    $datediff = getDateDiff($regdate$revodate);
 
}
mysqli_close($db); // 디비 접속 닫기
 
 
// 문자열 날짜를 입력받아 날짜 차이를 계산한다.
function getDateDiff($regDate$revoDate){
    date_default_timezone_set('Asia/Seoul');
    $date1 = new DateTime(date("Y-M-d", strtotime($regDate)));
    if($revoDate == '99991231'){
        $date2 = new DateTime(date("Y-M-d")); // 유지시 현재 날짜 반환
    } else {
        $date2 = new DateTime(date("Y-M-d", strtotime($revoDate)));
    }
 
    $intvl = $date2->diff($date1);
    $GapDate = $intvl->days;
    return DateType($GapDate);
}
 
// 날짜 타입 구분
function DateType($GapDate){
    
    if($GapDate >= 180){
        return "6개월";
    } else if($GapDate >= 90){
        return "3개월";
    } else if($GapDate >= 60){
        return "2개월";
    } else if($GapDate >= 30){
        return "1개월";
    } else if($GapDate >= 10){
        return "10일이상";
    } else {
        return "10일이내";
    }
}
 
?>

 

 

 

 

블로그 이미지

Link2Me

,