계산 연산자중에 범위를 지정하는 연산자가 있나요
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.0 |
https://xetown.com/tips/1299356
마트몬님의 팁을 적용하다가 1~10일 이런 연산자가 있으면 편할 것 같아서 질문을 남깁니다.
예를 들자면(참고로 위젯에 적용한 코드입니다)
아래의 <!--@elseif($now == $date-1 || $now == $date-2)--> 부분을
$data-1 에서 $data-10 까지 이런식으로 적용하고 싶은데 방법이 있을까요.
<!--// 종료 설정 -->
{@ $now = date("Ymd");}
{@ $date = $oDocument->getExtraEidValue('end')}
<!--@if(!$date)-->
<span>{$oDocument->getTitle($wi->subject_cut_size)}</span>
<!--@elseif($now > $date)-->
<span style="color:#a6a6a6; text-decoration:line-through !important;"><span style="margin-right:5px">종료</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<!--@elseif($now < $date-2)-->
<span><span style="margin-right:5px">진행중</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<!--@elseif($now == $date-1 || $now == $date-2)-->
<span><span style="margin-right:5px">종료임박</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<!--@elseif($now == $date)-->
<span><span style="margin-right:5px">오늘종료</span> {$oDocument->getTitle($wi->subject_cut_size)}</span>
<!--@end-->
<!--// 종료 설정끝 -->

댓글 4
링크하신 팁은 날짜 비교가 아니라 숫자 비교여서 과거, 현재, 미래만 구분이 가능해보입니다.
지금 방식대로 하면 만약 2020년 3월 1일이 종료일일 경우 날짜 차이를 확인하기 어렵지 싶은데요.
$date-1이 20200229가 아니라 20200300으로 잡히게 될 겁니다.
$date-2면 20200299겠구요;;;;
php7에선 date_diff라는 함수를 쓸 수 있더군요. 응용해보시면 좋을 것 같습니다.
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);
?>
처럼 사용할수 있습니다.
본문 사례처럼 특정 날짜를 더하거나 빼는 경우
처럼 사용가능합니다(-시 +를 -로 변경)
https://www.php.net/manual/en/datetime.diff.php
https://stackoverflow.com/questions/1286265/adding-1-day-to-a-datetime-format-value/14617225
위의 함수로 다시 공부해 봐야 겠네요^.^
감사합니다.