[PHP] 兩個日期區間是否重疊
#$sdate 第一個日期區間的開始日期
#$edate 第一個日期區間的結束日期
#$sday 第二個日期區間的開始日期
#$eday 第二個日期區間的結束日期
#$flag 旗標
# 0表示不能有剛好重疊的情況ex $edate!=$sday
# 1表示可以有剛好重疊的狀況ex $edate==$sday
function is_overlap($sdate,$edate,$sday,$eday,$flag=0){
echo "
\$sdate=$sdate \$edate=$edate \$sday=$sday \$eday=$eday \$flag=$flag";
$s1 = strtotime($sdate);
$e1 = strtotime($edate);
$s2 = strtotime($sday);
$e2 = strtotime($eday);
$str = '';
$F1 = empty($flag)?"<":"<=";
$F2 = empty($flag)?">":">=";
eval("\$str = (($s2 $F1 $s1 && $e2 $F1 $s1)||($s2 $F2 $e1 && $s2 $F2 $e1));");
echo "
\$str = (($s2 $F1 $s1 && $e2 $F1 $s1)||($s2 $F2 $e1 && $s2 $F2 $e1));";
echo "
\$str=$str";
if( $str )
return true;
else
return false;
}
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:22','2004-11-09 18:11:23',1);
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:23','2004-11-09 18:11:23',1);
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:24','2004-11-09 18:11:23',1);
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:22','2004-11-09 18:11:23',0);
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:23','2004-11-09 18:11:23',0);
echo "
is_overlap=".is_overlap('2004-08-23 08:11:23','2004-09-23 08:11:23','2004-09-23 08:11:24','2004-11-09 18:11:23',0);
?>
0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁