ホームページ  >  記事  >  バックエンド開発  >  PHPで指定した期間と一致するかを確認する方法を詳しく解説

PHPで指定した期間と一致するかを確認する方法を詳しく解説

jacklove
jackloveオリジナル
2018-06-08 16:07:461767ブラウズ

業務開発の都合上、時刻が指定期間内かどうかを判断する必要があり、曜日や日数の範囲の判断をサポートする必要があるため、次のメソッドを書きました。それをみんなで共有して学習し、使用できるようにしました。

#コードは次のとおりです: #

<?php/**
 * 判断时间是否匹配指定时间段
 *
 * Date:    2017-10-29
 * Author:  fdipzone
 * Version: 1.0
 *
 * @param  Array    $config  指定日期时段设定
 * @param  Int      $time    判断的日期时间,默认为当前日期时间
 * @return Boolean
 */function check_time_match($config, $time=null){

    $curtime = isset($time)? $time : time();    // 当前周几
    $curw = date(&#39;w&#39;, $curtime);    // 上一天周几
    $prew = date(&#39;w&#39;, $curtime-86400);    // 当前时分
    $curhm = date(&#39;H:i&#39;, $curtime);    // 循环指定日期时段,检查是否匹配
    foreach($config as $k=>$v){        // 循环时段
        foreach($v[&#39;range&#39;] as $t){            list($range, $next_day) = explode(&#39;,&#39;, $t);            // 获取时段的开始结束时间
            list($starttime, $endtime) = explode(&#39;-&#39;, $range);            // 当天
            if($next_day==0){                // 检查周几是否匹配
                if(in_array($curw, $v[&#39;week&#39;])){                    // 检查时间是否匹配
                    if($curhm>=$starttime && $curhm<=$endtime){                        return true;
                    }

                }            // 跨天
            }else{                // 检查当天周几是否匹配
                if(in_array($curw, $v[&#39;week&#39;])){                    // 检查当天时间是否匹配,开始时间-当天零点
                    if($curhm>=$starttime){                        return true;
                    }

                }                // 检查上一天周几是否匹配
                if(in_array($prew, $v[&#39;week&#39;])){                    // 检查上一天时间是否匹配,当天零点-结束时间
                    if($curhm<=$endtime){                        return true;
                    }

                }

            }

        }

    }    return false;

}?>

#デモ:

#

<?php// 指定日期时段设定$config = array(    array(        &#39;week&#39; => array(1,2,3,4,5), // 周一至周五
        &#39;range&#39; => array(&#39;08:00-12:00,0&#39;, &#39;14:00-18:00,0&#39;, &#39;20:00-22:00,0&#39;)
    ),    array(        &#39;week&#39; => array(0,6), // 周六周日
        &#39;range&#39; => array(&#39;08:00-18:00,0&#39;, &#39;20:00-02:00,1&#39;), // 0:不跨天,1:跨天
    )
);// 检查时间是否匹配$check_time = array(    null,               // 当前日期时间,2017-10-29 11:40 周日
    &#39;2017-10-23 11:00&#39;, // 周一
    &#39;2017-10-24 12:01&#39;, // 周二
    &#39;2017-10-25 19:59&#39;, // 周三
    &#39;2017-10-26 21:59&#39;, // 周四
    &#39;2017-10-27 22:00&#39;, // 周五
    &#39;2017-10-28 12:01&#39;, // 周六
    &#39;2017-10-28 18:01&#39;, // 周六
    &#39;2017-10-29 01:59&#39;, // 周日
    &#39;2017-10-30 01:59&#39;, // 周一
    &#39;2017-10-30 02:01&#39;, // 周一
    &#39;2017-10-31 01:59&#39;, // 周二);foreach($check_time as $time){
    var_dump(check_time_match($config, strtotime($time)));
}?>
出力:

boolean trueboolean trueboolean falseboolean falseboolean trueboolean trueboolean trueboolean falseboolean trueboolean trueboolean falseboolean false
この記事では、PHP が指定された期間と一致するかどうかを確認する方法について説明します。 PHPの中国語サイトです。 関連する推奨事項:

JS を使用してデバイス情報にアクセスする方法

mysql5.7 エクスポート データ プロンプト-- -file-priv オプションの問題に対する安全な解決策

php を介してコード呼び出しを追跡する debug_backtrace メソッドを実装する方法

以上がPHPで指定した期間と一致するかを確認する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。