class compare{
/*
数据集,要比较的时间段的集合,双层数组基本结构应如
array(0 =>array('startTime'=>9:00,'endTime'=>'10:00' ))
*/
var $rt;
/*
时间比较部分,比较两个时间点大小。
返回值 st1 >st2 1 ,st1 ==st2 0,st1 <st2 -1
*/
function compareTM($st1,$st2){
$s=split(':',$st1);
$t1=$s[0]*60+$s[1];
$s=split(':',$st2);
$t2=$s[0]*60+$s[1];
return $t1 > $t2?1:($t1==$t2?0:-1);
}
/*
比较时间段,$startTime,$endTime是输入的开始结束时间。
返回 TRUE数据库中包含(时间段有交集)该时间段。
FALSE 数据库中不包含(没有交集)该时间段。
*/
function compare($startTime,$endTime){
$rt=$this->rt;
while($row=array_shift($rt)){
$flag1=$this->compareTM($row['endTime'],$startTime);
$flag2=$this->compareTM($row['startTime'],$startTime);
$flag3=$this->compareTM($row['endTime'],$endTime);
$flag4=$this->compareTM($row['startTime'],$endTime);
//echo $flag1.' '.$flag2.' '.$flag3.' '.$flag4;
if($flag2==-1&&$flag3==1){
//echo 'A';
return false;
}
if($flag2==1&&$flag4==-1){
//echo 'B';
return false;
}
if($flag1==1&&$flag3==-1){
//echo 'C';
return false;
}
}
return true;
}
function setRT($rt){
if(is_array($rt)&&is_array($rt[0])&&!empty($rt)){
$this->rt=$rt;
return true;
}
return false;
}
function getRT(){
return $this->rt;
}
}