检查星期几和时间

时间:2015-06-05 01:13:35

标签: php time

我一直想弄清楚如何在一周和一天之间得到...我找到了这段代码:

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')){
但是,这只是打破了网站,我缺乏经验处理时间,我基本上想要在星期一晚上11点到星期二下午2点或星期一晚上11点到星期六下午5点之间进行检查,无论年/月的哪一天,它都必须进行检查我希望它是动态的而不是静态的。

我也尝试过:

if (date('H') < 14)

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

1 个答案:

答案 0 :(得分: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";
}

output = true;