我想看看我从数据库读取的时间是否与用户提供的时间重叠。
我的数据库如下所示:
-----------------------------------------------
|organiser|meeting_start|meeting_end|boardroom|
-----------------------------------------------
| John Doe| 1340193600 | 1340195400| big |
-----------------------------------------------
我的代码如下所示:
date_default_timezone_set('Africa/Johannesburg');
$from = strtotime($_GET['meeting_date'] . ' ' . $_GET['meeting_start']);
$to = strtotime($_GET['meeting_date'] . ' ' . $_GET['meeting_end']);
$another_meeting = false;
$meeting_date = strtotime($_GET['meeting_date']);
$meeting_next = $meeting_date + 86400;
$result = mysql_query("SELECT meeting_start, meeting_end FROM admin_boardroom_booking WHERE boardroom = '" . $_GET['boardroom'] . "' AND meeting_start >= '" . $meeting_date . "' AND meeting_end < '" . $meeting_next . "'")or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$from_compare = $row['meeting_start'];
$to_compare = $row['meeting_end'];
$intersect = min($to, $to_compare) - max($from, $from_compare);
if ( $intersect < 0 )
$intersect = 0;
$overlap = $intersect / 3600;
if ( $overlap <= 0 ) {
$another_meeting = true;
break;
}
}
if ($another_meeting)
echo 'ERROR';
如果我故意输入两次重叠的时间,则不会回显错误。我究竟做错了什么?
当且仅当以下条件中的至少一个成立时,两个时间段P1和P2重叠:
P2.from <= P1.from <= P2.to
)P1.from <= P2.from <= P1.to
)这将捕获部分重叠的期间以及一个完全覆盖另一个期间的期间。如果两个周期重叠,则其中一个周期必须始终在另一个周期内开始(或结束)。
因此$another_meeting
定义为:
$another_meeting = ($from >= $from_compare && $from <= $to_compare) ||
($from_compare >= $from && $from_compare <= $to);
您可能希望将边界情况更改为严格<
检查,以确保一个事件是否可以与另一个事件完全在同一时间开始。
问题内容: 我有两个日期范围,(start1,end1)::: >> date1 &&(start2,end2)::: >> date2。 我想检查两个日期是否为OverLaped。 我的流程图 假定“ <> =”运算符对于比较是有效的。 } 任何建议将不胜感激。 问题答案: 您可以为此使用Joda-Time。 它提供指定开始时刻和结束时刻的类,并可以检查与的重叠。 就像是 版画 因为第一个间隔的
问题内容: 有没有办法检查两个(非平凡的)选择是否等效? 最初,我希望两个选择在形式上等效,但是proving-sql-query-equivalency中的答案使 我停滞不前。 对于我的实际需要,我可以只检查两个选择的(实际)结果是否相同。 问题答案: 如果要比较查询结果,请尝试以下操作: 这将导致所有行仅由查询之一返回。
我有经度和纬度的地理坐标,比如西北和东南经度/纬度。所以,当我得到它们的时候,我把它们转换成公制。因此,这里我得到了我的第一个西北和东南坐标的矩形,然后我有了北,南,西,东坐标的相同公制中的边界矩形。我需要检查这两个直角相交的边,我写的是: 我不确定我做得对不对?我的要求是,如果第二个矩形的边界与第一个矩形的边界相交,那么第二个必须留在左边。否则,过滤。
问题内容: 我需要检查数据库中是否还有两个日期和另外两个日期。 我的数据库看起来像这样 在我的查询中,我指定范围:开始日期和结束日期让我们对其进行如下分配: 上面应该归还我所有的记录,因为所有的时间都超过了时间跨度。 但是我无法使查询工作:/ 我已经尝试了以下查询,但是没有运气: 这将返回两个结果: 1和3 我究竟做错了什么? 问题答案: 我相信以下条件会匹配所有可能的重叠情况。 除非您声明了非逻
我试图找出两个矩形是否相互重叠。我将下面的矩形表示为< code>[x1,x2] x [y1,y2] 我只需要一个伪代码,我可以实现它来查找矩形是否彼此重叠。
问题内容: 我收到了2个轮廓(和)。我怎么知道它们是否相交?我不需要坐标,我只需要一个布尔值或。 我尝试了不同的方式,并且已经尝试与 …但是得到的错误是数组没有方法“ Area()” 问题答案: 一旦有了的两个轮廓,就可以使用按位运算来检测相交。具体来说,我们可以使用。想法是为每个轮廓创建两个单独的图像,然后对它们使用逻辑运算。具有正值(或)的任何点都将是交点。因此,由于您只想获取是否存在相交的布