Я использую функции даты в PHP в своем проекте и хочу проверить погоду, что заданная дата-время лежит между данным диапазоном date-time.ie, например, если текущее время-дата – 2010-11-16 12:25:00 PM и хотите проверить, находится ли время между 2010-11-16 09:00:00 AM до 06:00:00 PM. В приведенном выше случае это верно, и если время не находится между диапазоном, оно должно возвращать значение false. Есть ли встроенная функция PHP для проверки этого или нам нужно будет написать новую функцию?
Просто используйте strtotime, чтобы преобразовать два раза в временные метки unix:
Примерная функция может выглядеть так:
function dateIsBetween($from, $to, $date = 'now') { $date = is_int($date) ? $date : strtotime($date); // convert non timestamps $from = is_int($from) ? $from : strtotime($from); // .. $to = is_int($to) ? $to : strtotime($to); // .. return ($date > $from) && ($date < $to); // extra parens for clarity }
Функция для проверки того, находится ли дата / время в пределах диапазона:
function check_date_is_within_range($start_date, $end_date, $todays_date) { $start_timestamp = strtotime($start_date); $end_timestamp = strtotime($end_date); $today_timestamp = strtotime($todays_date); return (($today_timestamp >= $start_timestamp) && ($today_timestamp <= $end_timestamp)); }
Функция вызова с параметрами даты начала / времени, даты / даты окончания, сегодняшней даты / времени. Ниже параметров получает функцию, чтобы проверить, находится ли сегодняшняя дата / время между 10:00 26 июня 2012 года и в полдень в тот же день.
if(check_date_is_within_range('2012-06-26 10:00:00', '2012-06-26 12:00:00', date("Ymd G:i:s"))){ echo 'In range'; } else { echo 'Not in range'; }