【问题标题】:Check day of week and time检查星期几和时间
【发布时间】:2015-08-19 19:53:52
【问题描述】:

我一直在试图弄清楚如何在一周中的某一天和时间之间切换...我发现了这个 sn-p 代码:

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)

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

【问题讨论】:

    标签: php time


    【解决方案1】:

    您还缺少 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;

    【讨论】:

    • How silly x) 解决了我的一个问题,只需要弄清楚如何在两个日期之间获取
    • 那不是只检查两年点之间吗?所以对于日点我会做'd H:i'而不是'Y-m-d H:i'吗?
    • 对不起,我不太明白这个问题。例如。 Mon 12:00 Sun 13:00 然后检查 Wed 5:00?
    • 是的,例如周一 12:00 周日 13:00,如果周三下午 5:00 介于这两者之间 = true。在这种情况下,年份和月份无关紧要
    • 不应该是这样的吗? $i = date('H:i', strtotime($input . '+8 hours'));冒号而不是逗号。这是一个串联,不是吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多