2015-06-05 22 views
1

我一直在努力的一天弄清楚如何星期和时间的天之间得到...我发现这个代码片段:检查时间和星期

function isBetween($from, $till, $input) { 
$f = DateTime::createFromFormat('!H:i', $from); 
$t = DateTime::createFromFormat('!H:i', $till); 
$i = DateTime::createFromFormat('!H:i', $input); 
if ($f > $t) $t->modify('+1 day'); 
return ($f <= $i && $i <= $t) || ($f <= $i->modify('+1 day') && $i <= $t); 
}; 

,我设法得到它两个时间之间的检查和使用,如果目前的比赛看:

if (isBetween('22:30','02:00','23:00')){ 
echo "true"; 
} 

但是我试着这样做

if (isBetween('22:30','02:00',date('H:i')){ 

但只是打破了SI te,我缺乏处理时间的经验,我基本上想要在星期一晚上11点到星期二下午2点之间检查,星期一到星期五下午11点到星期六下午5点之间检查,无论一年中的哪一天,我都希望它是动态而不是静态的..

我也试过:

if (date('H') < 14) 

,但它是非常简单的,我不知道如何得到的东西一样复杂的日期和时间+秒

回答

2

你失踪1人更多关闭)

if (isBetween('22:30','02:00',date('H:i'))){ 

你可以做这样的:

function isBetween($from, $till, $input) { 
$f = date('H:i', strtotime($from)); 
$fd= date('l', strtotime($from)); 
$t = date('H:i', strtotime($till)); 
$td= date('l', strtotime($till)); 
$i = date('H:i', strtotime($input,'+8 hours')); 
$id= date('l', strtotime($input)); 
$days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
if(array_search($fd,$days)<array_search($id,$days) && array_search($td,$days)>array_search($id,$days)){ 
    return true; 
}elseif(array_search($fd,$days)==array_search($id,$days) && $f<$i){ 
    return true; 
}elseif(array_search($td,$days)==array_search($id,$days) && $t<$i){ 
    return true; 
} 
return false; 
}; 

$from = 'Wednesday 12:00'; 
$till = 'Saturday 23:00'; 
$input = 'Friday 12:23'; 

if(isBetween($from,$till,$input)){ 
    echo "True"; 
}else{ 
    echo "not"; 
} 

输出= true;

+0

如何愚蠢x)修复了我的一个问题,只需要弄清楚如何在两个日期之间得到 –

+0

答案更新.. – roullie

+0

这不仅仅是两年之间的检查点吗?所以对于白天点我会做 'd H:我'而不是'Y-m-d H:我'? –