找出两个时间段之间的时间?

时间:2009-11-30 16:14:20

标签: php

我有两次start_time = 2009-12-01 9.30 pm和end_time = 2009-12-01 11.30 pm(YYYY-MM-DD)。如果用户在这些时间之间进行任何活动,即2009-12-01晚上10:30我需要告诉他你做这项活动是无效的...... 两次2009-12-01 9.30 pm和2009-12-01 11.30 pm取自数据库。时间2009-12-01 10.30由用户提供。

我的问题是如何才能找到晚上9点30分到晚上11点30分之间发生的时间...

我用PHP编写程序

5 个答案:

答案 0 :(得分:1)

$start = strtotime($start_time);
$end = strtotime($end_time);
$user = strtotime($user_time);

if($user > $start && $user < $end) die('You are not allowed');

答案 1 :(得分:1)

使用strtotime()将字符串转换为Unix秒。然后一个简单的

if ($time1 < strtotime(10:30...) && strtotime(10:30...) < $time 2)
{
    //do your stuff;
}

答案 2 :(得分:1)

您可以使用数据库查询或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.";
}

答案 3 :(得分:0)

将“2009-12-01 9.30 pm”和“2009-12-01 11.30 pm”转换为unix时间戳,然后将其与<进行比较:

if ($start <= $event && $event < $end)
    complain();
} else {
    proceed();
}

答案 4 :(得分:0)

当您只需使用SQL查询时,无需进行任何过多的PHP处理:

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,则表示用户活动属于数据库中的开始和结束时间。