시간에만 게시글 출력 방식 질문

시간에만 게시글 출력 방식 질문

QA

시간에만 게시글 출력 방식 질문

본문

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

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

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

당연하죠

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

 다음처럼

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

 영업시간인 게시물 출력

 

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

영업시간 이외 게시물 출력

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

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

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

 

 

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

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


 
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 {
        // 영업 종료된 게시물 출력
    }
}
답변을 작성하시기 전에 로그인 해주세요.
전체 15,424
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT