У меня есть cronjob, который срабатывает каждые 5 минут. Он должен выполнять некоторые задачи только в определенное время дня (например, утром и вечером).Самый эффективный способ определить, находится ли дата-время в пределах временного интервала
Что является наиболее эффективным/элегантным способом php, чтобы определить, находится ли DateTime в настоящее время между 5-минутным временным интервалом в том, что cronjob может ударить?
На данный момент я делаю:
$date = new DateTime();
$hour = (int)$date->format('H');
$min = (int)$date->format('i');
if($hour == 7 && ($min >= 40 || $min < 45)) {
// Do something in the morning
}
if($hour == 21 && ($min >= 00 && $min < 05)) {
// Do something in the evening
}
Но это, кажется, как много кода. Нет ли что-то вроде
$date->isInTimeRane($begin, $end);
как родной PHP-код?
Можно ли установить дневное время «каждый год, каждый месяц и каждый день»? Потому что я хочу запускать это каждый день ... Если бы мне пришлось инициализировать зависимое начало и конец каждый раз, это раздувало бы код (таким образом, я мог бы придерживаться и моей текущей версии). – shredding
Вы можете пойти примерно так: '$ begin = new DateTime(); $ begin-> setTime (7, 40); '- это дает вам экземпляр DateTime, представляющий 7:40 в текущий день. Но это не совсем эффективное решение. – Niko