2014-01-04 2 views
0

Я давно застрял в этой проблеме. Мое задание - установить crontab для автоматического закрытия сервера «EVERYDAY» для обслуживания. Однако, если «конец» - это перерыв в полночь в этот день, я не знаю, как проверить сравнение. Вот некоторые примеры:сравнение текущего времени, если время до полуночи

// if i want to stop the server from 20:00 and to start it at 23:00, i would code like this 
$current_time = date('Gi'); // for example: 1730 
$start_time = 2000; 
$end_time = 2300; 
if ($current_time >= $start_time && $current_time <= $end_time){ 
    echo "Server is close"; // simple to compare 
} 
else { 
    echo "Server is open"; // simple to compare 
} 

я знаю, что это достаточно просто для каждого, однако, если сценарий является то, что я хочу, чтобы закрыть его с 20:00 до 01:00, я застрял на нем

$current_time = date('Gi'); // for example: 2130 
$start_time = 2000; 
$end_time = 0100; 

Как я могу установить сравнение if..else на время, если оно пересечет полночь? Спасибо за вашу помощь ...

+0

может быть лучше подход использовать UnixTime –

+0

одну деталь я должен еще раз отметить, является то, что, время устанавливается, чтобы быть каждый день, просто Менеджер проектов просит меня отключить сервер каждый день с 23:00 до 02:00, если он попросит меня установить его с 20:00 до 23:00, я могу справиться с этим, однако я не имею понятия, обрабатывать кросс-полуночный выпуск – user2173445

+0

Как вы можете видеть, это длится через два дня, поэтому в основном ваше время окончания должно быть «+1 день 02: 00», или вы можете добавить свой «+1 день», если конечное время меньше времени начала. – core1024

ответ

0

Попробуйте это:

$start_time = 1200; 
$end_time = 2300; 

if ($end_time < $start_time) { 
    $end_time_2 = strtotime(date('c',format_time($start_time)) . " +1 day"); 
} else { 
    $end_time_2 = format_time($end_time); 
} 

if (time() >= format_time($start_time) && time() <= $end_time_2){ 
    echo "Server is close"; 
} 
else { 
    echo "Server is open"; 
} 

function format_time($time) { 
    return strtotime(date('Y-m-d ').floor($time/100).':'.($time % 100)); 
} 
+0

, но фатальная проблема в том, что $ start_time и $ end_time установлены на каждый день, они выглядят так: [час]: [минута], и больше не нужно вводить конкретную дату, честно говоря, для того, чтобы crontab обнаружил «HOUR» и «Minute», а crontab запускается каждую минуту – user2173445

+0

@ user2173445 Проверить обновленный ответ – Paul

+0

Спасибо за вашу помощь, я буду Попробуй это – user2173445

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