Как отобразить что-нибудь между определенной продолжительностью времени в php? - PullRequest
1 голос
/ 29 сентября 2019

У меня есть код, показанный ниже, в котором значения внутри $ start_day, $ data -> {"start_time"} и $ end_day, $ data -> {"end_time"} введено пользователем.

enter image description here

1. Начальный день: $ start_day
2. Время начала: $ data -> {"start_time"}

3. Конец дня: $ end_day
4. Время окончания: $ data -> {"end_time"}

Чего я хочу добиться с помощью php, это Я хочу отобразить что-нибудь междуопределенное время .

Я хочу отобразить что-то между Начальный день / время и Конечный день / время .

Допустим, предположим, $start_day это mon, $data->{"start_time"} это 111300.
$end_day - это sat, а $data->{"end_time"} - это 114500

date_default_timezone_set('America/Toronto');

$nowtime = (int)date('His');

$arradate = strtolower(date('D')); //extracting day of the week on the basis of timezone

$start_day=$data->{select_start_day}; // it can be `mon` or `tue` or `wed` or `thu` or `fri` or `sat` or `sun` depending on what is inside the JSON entered by the user.

$end_day=$data->{select_end_day}; // it can be `mon` or `tue` or `wed` or `thu` or `fri` or `sat` or `sun` depending on what is inside the JSON entered by the user.

Значения внутри всех этих переменных вводятся пользователем, поэтому все это время контролируется пользователем.

Это то, что я пробовал, и это не мешает мне.

if(($arradate >= $start_day && $nowtime>=$data->{"start_time"}) && ($arradate <= $end_day && $nowtime <= $data->{"end_time"})) {
    echo "Hello World";  // I want Hello World to be displayed in between Friday 6pm and Tuesday 6pm
}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Попробуйте:

$dowMap = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

$arradate = date('D');

$arradateNum = array_search($arradate, $dowMap);

$start_dayNum = array_search($start_day, $dowMap);

$end_dayNum = array_search($end_day, $dowMap);

if(
    ($arradateNum >= $start_dayNum && $nowtime>=$data->{"start_time"}) && 
    ($arradateNum <= $end_dayNum && $nowtime <= $data->{"end_time"})
) {
    echo "Show Anything";  
}

0 голосов
/ 29 сентября 2019

Я бы держал все даты в одном формате.Unix time - отличный способ сохранить время, потому что вы можете легко выполнять вычисления.

В вашем примере вы рассчитываете, используя как строки, так и числа.На самом деле у вас есть 3 разных способа выражения даты.Я предлагаю использовать только date (), чтобы сохранить и сравнить все значения и форматировать только эту временную метку Unix при отображении для конечного пользователя.

$arradate = strtolower(date('D')); //echos the day ex: sun
$nowtime = (int)date('His'); //echos a different format ex: 25019
...