Develope/PHP
PHP D-Day 구하기
Jason park@
2018. 7. 2. 23:19
반응형
PHP 로 D-DAY 를 구하려면 어떻게 해야할까?
mysql 에서는 간단하게 아래와같이 처리하면 D-DAY 가 나온다.
SELECT DATEDIFF(date(now()), '2018-07-04'); // 2018-07-02 가 now() 라는 과정하에 결과값은 -2
PHP에도 Mysql 의 DATEDIFF 같은 함수가 있을까?
http://php.net/manual/en/book.datetime.php
PHP Date/Time Document 에 보면 diff 와 관련해서 2가지 함수가 제공되고있다.
DateTime Interface 의 diff 와
우리가 가장 많이 사용하고있는 Date/Time 관련 함수 내의 date_diff 이다.
두 함수를 이용하여 날짜를 비교해보았다.
차이점을 한번 살펴보자.
<?
echo '<pre>';
// DateTime Interface :: diff function
try {
$date1 = new DateTime( '2018-07-02' );
$date2 = new DateTime( '2018-07-04' );
$interval = $date2->diff($date1);
print_r($interval);
echo $interval->format('%R%a DAY');
}catch (Exception $e){
echo $e;
}
echo '<BR/>';
// date_diff function
try {
$datetime1 = date_create('2018-07-02');
$datetime2 = date_create('2018-07-04');
$diff = date_diff($datetime2, $datetime1);
print_r($diff);
echo date_interval_format($diff,'%R%a DAY');
}catch (Exception $e){
echo $e;
}
?>
두번째 방식은 PHP 구버전에서 사용되던것같다.
Document 에서 사용법을 보려면 정보가 나오지 않는다. 모두 DateTime Class 로 가서 보라고 안내 한다.
두 방식 모두 결과는 아래와 같이 동일하다.
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 2
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 2
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
-2 DAY
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 2
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 2
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
-2 DAYPHP 를 오래 사용했지만 PHP 로 D-DAY 구하려고 시도해본것은 (기억에 안나지만) 처음인것 같아서 Document 를 보고 만들었지만
Class 방식이 훨씬 더 직관적이고 좋은것 같다.
아참. diff 결과의 format은 date class 의 format 이 아닌 dateinterval class 의 format 이다.
사용가능한 파라메터는 다음 링크를 참고하자.
http://php.net/manual/en/dateinterval.format.php
반응형