2016-03-08 2 views
0

Я нашел множество решений, выводящих bool, если день до или после определенной даты, но я не могу найти что-то конкретное в PHP.Проверяется текущее время дня до или после определенного периода времени

У меня есть сценарий, который я хочу использовать для использования с 7:45 до 15:45 и только по понедельникам до пятницы - но никогда раньше или после этих времен или в выходные.

У меня ломается голова о том, как это сделать, и я публикую здесь, потому что я уверен, что есть очень простой способ сделать это, что я пропускаю.

Это то, что я до сих пор:

$timeOfDay = date("h:iA"); 
$dayOfDay = date("D"); 

if(strcmp($dayOfDay,'Mon') != 0 
||strcmp($dayOfDay,'Tue') != 0 
||strcmp($dayOfDay,'Wed') != 0 
||strcmp($dayOfDay,'Thu') != 0 
||strcmp($dayOfDay,'Fri') != 0) { 
    //disable site 
} else { 
    //if $timeOfDay is before 7:30AM or after 3:45PM, disable site ELSE enable site 
} 

Чтобы было ясно, сценарий должен быть только онлайн понедельник-пятница между 7:45 утра и 3:45 вечера.

EDIT: Еще одно замечание - я только ищу PHP логику, в которой я могу получить истинные или ложные для, я могу справиться с остальным кодом отключения скрипта и т.д.

+1

Получите и сравнить timestamps –

+0

@u_mulder Временные отметки из чего? Нет записей для сравнения. Это то, что я пытаюсь выяснить, что я могу сравнить время от моих 2 переменных, чтобы создать истинное или ложное, основанное на моих потребностях. – GrumpyCrouton

ответ

1
$now = strtotime("now"); // here come current timestamp 
$dt_start = strtotime(date("d.m.Y 07:45")); // timestamp of today 07:45 
$dt_end = strtotime(date("d.m.Y 15:45")); // timestamp of today 15:45 
$cur_day = date("w", $now); // number of cur day 0 to 6 

if ((0 < $cur_day && $cur_day < 6)    // check what day is it 
    && ($dt_start < $now && $now < $dt_end)) { // check time interval 
    // do stuff 
} 
+0

Так что если инструкция 'do stuff', если время между этими 2 раза? Или это наоборот? – GrumpyCrouton

+0

Между двумя раз. –

Смежные вопросы