질문/조언질답게시판
Extra Form
PHP PHP 7.0
CMS Rhymix

https://xetown.com/tips/1299356

마트몬님의 팁을 적용하다가 1~10일 이런 연산자가 있으면 편할 것 같아서 질문을 남깁니다.

 

예를 들자면(참고로 위젯에 적용한 코드입니다) 

아래의 <[email protected]($now == $date-1 || $now == $date-2)--> 부분을

$data-1 에서 $data-10 까지 이런식으로 적용하고 싶은데 방법이 있을까요.

 

<!--// 종료 설정 -->

{@ $now = date("Ymd");}
{@ $date = $oDocument->getExtraEidValue('end')}


<[email protected](!$date)-->
<span>{$oDocument->getTitle($wi->subject_cut_size)}</span>
<[email protected]($now > $date)-->
<span style="color:#a6a6a6; text-decoration:line-through !important;"><span style="margin-right:5px">종료</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<[email protected]($now < $date-2)-->
<span><span style="margin-right:5px">진행중</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<[email protected]($now == $date-1 || $now == $date-2)-->
<span><span style="margin-right:5px">종료임박</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>

<[email protected]($now == $date)-->
<span><span style="margin-right:5px">오늘종료</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<[email protected]>
<!--// 종료 설정끝 -->

Screenshot 2019-12-06 at 01.57.10.jpg

  • profile

    링크하신 팁은 날짜 비교가 아니라 숫자 비교여서 과거, 현재, 미래만 구분이 가능해보입니다.
    지금 방식대로 하면 만약 2020년 3월 1일이 종료일일 경우 날짜 차이를 확인하기 어렵지 싶은데요.
    $date-1이 20200229가 아니라 20200300으로 잡히게 될 겁니다.

    $date-2면 20200299겠구요;;;;

    php7에선 date_diff라는 함수를 쓸 수 있더군요. 응용해보시면 좋을 것 같습니다.

  • profile profile

    https://www.php.net/manual/en/function.date-diff.php
    date_diff 함수는 DateTime::diff 함수의 alias입니다. DateTime 클래스는 php 5.2부터, diff 함수는 5.3부터 존재했습니다.

    <?php
    $datetime1 
    = new DateTime('2009-10-11');
    $datetime2 = new DateTime('2009-10-13');
    $interval $datetime1->diff($datetime2);
    echo 
    $interval->format('%R%a days');
    ?>

    이렇게 혹은

     

    <?php
    $datetime1 
    date_create('2009-10-11');
    $datetime2 date_create('2009-10-13');
    $interval date_diff($datetime1$datetime2);
    echo 
    $interval->format('%R%a days');
    ?>

    이렇게 사용될수 있습니다. 결과는 +2days가 됩니다.

     

    단순 날짜 비교는

    <?php
    $date1 
    new DateTime('2009-10-11');
    $date2 new DateTime('2009-10-13');

    var_dump($date1 == $date2);
    var_dump($date1 $date2);
    var_dump($date1 $date2);
    ?>

    처럼 사용할수 있습니다.

     

    본문 사례처럼 특정 날짜를 더하거나 빼는 경우

    $datetime = new DateTime('2013-01-29');
    $datetime->modify('+1 day');
    echo $datetime->format('Y-m-d H:i:s');

    처럼 사용가능합니다(-시 +를 -로 변경)


    https://www.php.net/manual/en/datetime.diff.php

    https://stackoverflow.com/questions/1286265/adding-1-day-to-a-datetime-format-value/14617225

  • profile ?
    아! 날짜로 잡히는게 아니라 숫자로 잡히는 군요...
    감사합니다.
  • profile ?
    충실한 답변 너무 고맙습니다.
    위의 함수로 다시 공부해 봐야 겠네요^.^