Bandicoot
@Bandicoot
Вась-программист

Как лучшим образом проверить, входит ли конкретное время в заданный временной диапазон?

Есть в MySQL один замечательный тип TIME, в котором прописывается время в формате HH:MM:SS. В моей таблице есть 2 поля с типом TIME - начало и конец временного диапазона. Мне нужно определить средствами PHP, входит ли конкретное время, например 12:45:00, в необходимый диапазон.

Как можно это сделать? Как я понимаю, переводить время в число через strtotime - не лучшее решение.
  • Вопрос задан
  • 248 просмотров
Решения вопроса 2
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
Лучше это сделать на этапе выборки из БД.
Ведь когда вы делаете запрос в БД, у вы скорее всего уже знаете диапазон.
Если же вопрос стоит не в том что бы выбрать только попадающие в диапазон,а выбрать все, а те кто входит в диапозон "отметить" - опять же это можно сделать на уровне запроса:
SELECT
   IF(timefield >= TIME('14:51:08') AND timefield <= TIME('14:51:09'),1,0) as intime
FROM ....
Ответ написан
@bkosun
Если нужно сделать выборку: https://dev.mysql.com/doc/refman/5.7/en/comparison...

Иначе:
$time = '12:45:00';
$start = '12:46:00';
$end = '13:45:00';

$time = DateTime::createFromFormat('H:i:s', $time);
$start = DateTime::createFromFormat('H:i:s', $start);
$end = DateTime::createFromFormat('H:i:s', $end);

if ($time > $start && $time < $end)
{
   echo 'here';
}


https://stackoverflow.com/questions/15911312/how-t...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Можно разбить строку по двоеточию и сравнивать по частям.
Можно поудалять двоеточия и сравнивать полученный результат как числа.
А можно не париться и просто сравнить строки.
По алгоритму сравнения строк все будет ровно проверяться, если у вас 24 часовой формат и часы/минуты/секунды всегда заданы двухзначным числом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы