проверить статус бизнеса на основе времени открытия и закрытия, используя функцию времени php - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь показать статус бизнес-операции, основываясь на времени открытия и закрытия, которое они предоставляют, но, похоже, это не работает, даже если я следую нескольким примерам в Интернете.Пожалуйста, я знаю, что вопрос, возможно, задавался другим способом, может кто-нибудь помочь мне исправить это, так как приведенная ниже функция показывает закрытие, даже когда бизнес открыт.

* Моя функция php
function OperationHours($open, $close){
    $status = 'closed';
    $current_time = date('h:iA');
    $nowTime = DateTime::createFromFormat('h:iA', $current_time);
    $openTime = DateTime::createFromFormat('h:iA', $open);
    $closeTime = DateTime::createFromFormat('h:iA', $close);
        if ($nowTime > $openTime && $nowTime < $closeTime){
            $status = 'open';
        }
    return $status;
}

/*function OperationHours($open, $close){
    $status = 'closed';
    $timestamp = time();
    $currentTime = (new DateTime())->setTimestamp($timestamp);
    $openTime = DateTime::createFromFormat('h:iA', $open);
    $closeTime = DateTime::createFromFormat('h:iA', $close);
        if(($openTime < $currentTime) && ($currentTime < $closeTime)) {
            $status = 'open';
        }
    return $status;
}*/

echo OperationHours('09:00AM', '03:30AM');

1 Ответ

0 голосов
/ 28 мая 2018

Вам необходимо добавить проверку, относится ли время закрытия к другому дню:

function OperationHours($open, $close){
    $status = 'closed';
    $nowTime = new DateTime("NOW", new DateTimeZone("GMT"));    
    $openTime = DateTime::createFromFormat('h:iA', $open, new DateTimeZone("GMT"));
    $closeTime = DateTime::createFromFormat('h:iA', $close, new DateTimeZone("GMT"));

    // check if the close time is before the opening time       
    if($closeTime <= $openTime){
        $closeTime->add(new DateInterval("P1D"));
    }

    if ($nowTime > $openTime && $nowTime < $closeTime){
        $status = 'open';
    }
    return $status;
}

echo OperationHours('09:00AM', '11:30AM');

Если вы проверяете даты с часовым поясом, установите GMT на определенные часовые пояса.В противном случае он будет иметь разницу часовых поясов, которая покажет 10:00AM +0300 как 07:00AM +0000 (GMT), а затем вернет closed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...