테스트 사이트 - 개발 중인 베타 버전입니다

시간에만 게시글 출력 방식 질문 채택완료

그누최공 1년 전 조회 6,078

항상 많은 도움 주신분들 감사드립니다.

매일 영업시간인 게시물은 위에서 출력 영업마감된 게시물은 아래에 출력으로 하는데

20:00~다음날 06:00 으로 하니 영업시간인데도 영업마감쪽으로 출려되더라구요

제가 코드를 잘못 넣은건지 아니면 간단히 할수있는 방법이라든지 검색 단어 조언좀 부탁드리겠습니다 ㅠ

 

for ($i=0; $i < $list_cnt; $i++) {

      $allday = date("Ymd");
      $allnow = date("H:i");
      $startTime = $list[$i]['wr_1'];
      $endTime = $list[$i]['wr_2'];


      if ($allnow>= $startTime && $allnow <= $endTime) {

 영업시간인 게시물 출력

}

 

 

// 리스트
      for ($i=0; $i < $list_cnt; $i++) {

        $allday = date("Ymd");
        $allnow = date("H:i");
        $startTime = $list[$i]['wr_1'];
        $endTime = $list[$i]['wr_2'];
        if ($allnow < $startTime || $allnow > $endTime) {

영업시간 이외 게시물 출력

}

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
1년 전

당연하죠

현재시각 23시인 경우 시작시각 보다 크지만 종료시각(06시)보다 작을 수가 없으니 조건이 거짓이 됩니다

 다음처럼

  if ( ($allnow>= $startTime && $allnow<= '24:00') || ($allnow >='00:00' && $allnow <= $endTime) {

 영업시간인 게시물 출력

 

 if ( $allnow >$endTime && $allnow < $startTime) {

영업시간 이외 게시물 출력

=========================

$allday = date("Ymd"); <==이것은 for문 내에 넣어서 loop할때마다 다시 실행할 것이 아니라

for문 위에 넣어서 한번만 실행 하도록 하세요

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그누최공
1년 전
감사합니다 ㅎㅎ 균이님 도움 많이 받네요

댓글을 작성하려면 로그인이 필요합니다.

1년 전

</p>

<p> </p>

<p>function isOpenNow($startTime, $endTime) {

    $now = new DateTime();

    $start = DateTime::createFromFormat('H:i', $startTime);

    $end = DateTime::createFromFormat('H:i', $endTime);</p>

<p>    // 종료 시간이 시작 시간보다 이르면 (자정을 넘어가는 경우)

    if ($end < $start) {

        $end->modify('+1 day');

        // 현재 시간이 자정 이전이면, 시작 시간도 전날로 조정

        if ($now < $end) {

            $start->modify('-1 day');

        }

    }</p>

<p>    return ($now >= $start && $now <= $end);

}</p>

<p>// 사용 예시

for ($i = 0; $i < $list_cnt; $i++) {

    $startTime = $list[$i]['wr_1'];

    $endTime = $list[$i]['wr_2'];</p>

<p>    if (isOpenNow($startTime, $endTime)) {

        // 영업 중인 게시물 출력

    } else {

        // 영업 종료된 게시물 출력

    }

}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그누최공
1년 전
더 전문적으로 써주셨는데 적용해보니 제가 코드를 엉뚱한데 넣어서 실행이 안된거같아요 ㅎㅎ 답변 감사합니다

댓글을 작성하려면 로그인이 필요합니다.

R
1년 전

시간에 대해 strtotime() 로 timestamp 화 해서 비교하시고 원하는 결과를 도출해보세요.

https://www.php.net/manual/en/function.strtotime.php

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그누최공
1년 전
참고하겠습니다 ! 감사합니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인