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일이내";
}
}
?>
|
728x90
'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글
PHP 회원 form jQuery POST 처리 (0) | 2023.07.13 |
---|---|
PHP 일일 접속 통계 구현 코드 (0) | 2023.06.08 |
Java 암호화 및 PHP 복호화 (0) | 2021.07.08 |
PHP 특정날짜 구하기 (0) | 2021.04.17 |
News API 직접 연동 불가를 해결하는 방법 (0) | 2020.11.09 |