Узнать время между двумя временными интервалами? - PullRequest
0 голосов
/ 30 ноября 2009

У меня есть два раза start_time = 2009-12-01 21:30 и end_time = 2009-12-01 23:30 (ГГГГ-ММ-ДД). Если пользователь выполняет какие-либо действия между этими временами, т.е. в 2009-12-01 22:30 Мне нужно сказать ему, что вы не действительны для этой деятельности ... Два раза 2009-12-01 21:30 и 2009-12-01 23:30 берется из базы данных. Время 2009-12-01 10:30 предоставляется пользователем.

Мой вопрос: как я могу найти время, которое происходит в 22:30 между 21:30 и 23:30 ...

Я делаю свою программу на PHP

Ответы [ 5 ]

1 голос
/ 30 ноября 2009

Вы можете использовать запрос к базе данных или PHP. В PHP:

$timeStart = strtotime('2009-12-01 11.30');
$timeEnd   = strtotime('2009-12-01 09.30');
$time = strtotime('2009-12-01 10.30');

if($time > $timeStart && $time < $timeEnd) {
   echo "Between given times.";
}
1 голос
/ 30 ноября 2009

Используйте strtotime() для преобразования строк в секунды Unix. Тогда простой

if ($time1 < strtotime(10:30...) && strtotime(10:30...) < $time 2)
{
    //do your stuff;
}
1 голос
/ 30 ноября 2009
$start = strtotime($start_time);
$end = strtotime($end_time);
$user = strtotime($user_time);

if($user > $start && $user < $end) die('You are not allowed');
0 голосов
/ 30 ноября 2009

Нет необходимости выполнять чрезмерную обработку PHP, когда вы можете просто использовать SQL-запрос:

SELECT 1 FROM your_table_name WHERE '2009-12-01 10:30:00' BETWEEN start_time AND end_time;

Это вернет 1 или более результатов, если активность пользователя происходит между любым временем начала и окончания в базе данных. Обратите внимание, что у вас должен быть самый левый индекс префикса в вашей таблице для (start_time, end_time).

Просто проверьте результаты вашего запроса. Если число строк больше или равно 1, вы знаете, что активность пользователя падает между начальным и конечным временем в вашей базе данных.

0 голосов
/ 30 ноября 2009

преобразуйте «2009-12-01 21:30» и «2009-12-01 23:30» в метки времени unix, затем сравните их с <:

if ($start <= $event && $event < $end)
    complain();
} else {
    proceed();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...