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

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

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

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 포인트

당연하죠

현재시각 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개

감사합니다 ㅎㅎ 균이님 도움 많이 받네요

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

Copy
function isOpenNow($startTime, $endTime) {
    $now = new DateTime();
    $start = DateTime::createFromFormat('H:i', $startTime);
    $end = DateTime::createFromFormat('H:i', $endTime);

    // 종료 시간이 시작 시간보다 이르면 (자정을 넘어가는 경우)
    if ($end < $start) {
        $end->modify('+1 day');
        // 현재 시간이 자정 이전이면, 시작 시간도 전날로 조정
        if ($now < $end) {
            $start->modify('-1 day');
        }
    }

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

// 사용 예시
for ($i = 0; $i < $list_cnt; $i++) {
    $startTime = $list[$i]['wr_1'];
    $endTime = $list[$i]['wr_2'];

    if (isOpenNow($startTime, $endTime)) {
        // 영업 중인 게시물 출력
    } else {
        // 영업 종료된 게시물 출력
    }
}
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

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

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

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

답변에 대한 댓글 1개

참고하겠습니다 ! 감사합니다

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

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

로그인
🐛 버그신고