티스토리 뷰

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 DAY


PHP 를 오래 사용했지만 PHP 로 D-DAY 구하려고 시도해본것은 (기억에 안나지만) 처음인것 같아서 Document 를 보고 만들었지만 

Class 방식이 훨씬 더 직관적이고 좋은것 같다.


아참. diff 결과의 format은 date class 의 format 이 아닌 dateinterval class 의 format 이다. 

사용가능한 파라메터는 다음 링크를 참고하자.


http://php.net/manual/en/dateinterval.format.php


반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함