Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Methode zur Überprüfung, ob der angegebene Zeitraum in PHP übereinstimmt
Aufgrund der Arbeitsentwicklungsanforderungen müssen wir feststellen, ob eine Zeit innerhalb eines bestimmten Zeitraums liegt, und wir müssen die Bestimmung von Wochentagen und über mehrere Tage hinweg unterstützen. Deshalb haben wir die folgende Methode geschrieben und sie allen zur Verfügung gestellt zu lernen und anzuwenden.
Der Code lautet wie folgt:
<?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('w', $curtime); // 上一天周几 $prew = date('w', $curtime-86400); // 当前时分 $curhm = date('H:i', $curtime); // 循环指定日期时段,检查是否匹配 foreach($config as $k=>$v){ // 循环时段 foreach($v['range'] as $t){ list($range, $next_day) = explode(',', $t); // 获取时段的开始结束时间 list($starttime, $endtime) = explode('-', $range); // 当天 if($next_day==0){ // 检查周几是否匹配 if(in_array($curw, $v['week'])){ // 检查时间是否匹配 if($curhm>=$starttime && $curhm<=$endtime){ return true; } } // 跨天 }else{ // 检查当天周几是否匹配 if(in_array($curw, $v['week'])){ // 检查当天时间是否匹配,开始时间-当天零点 if($curhm>=$starttime){ return true; } } // 检查上一天周几是否匹配 if(in_array($prew, $v['week'])){ // 检查上一天时间是否匹配,当天零点-结束时间 if($curhm<=$endtime){ return true; } } } } } return false; }?>
Demo:
<?php// 指定日期时段设定$config = array( array( 'week' => array(1,2,3,4,5), // 周一至周五 'range' => array('08:00-12:00,0', '14:00-18:00,0', '20:00-22:00,0') ), array( 'week' => array(0,6), // 周六周日 'range' => array('08:00-18:00,0', '20:00-02:00,1'), // 0:不跨天,1:跨天 ) );// 检查时间是否匹配$check_time = array( null, // 当前日期时间,2017-10-29 11:40 周日 '2017-10-23 11:00', // 周一 '2017-10-24 12:01', // 周二 '2017-10-25 19:59', // 周三 '2017-10-26 21:59', // 周四 '2017-10-27 22:00', // 周五 '2017-10-28 12:01', // 周六 '2017-10-28 18:01', // 周六 '2017-10-29 01:59', // 周日 '2017-10-30 01:59', // 周一 '2017-10-30 02:01', // 周一 '2017-10-31 01:59', // 周二);foreach($check_time as $time){ var_dump(check_time_match($config, strtotime($time))); }?>
Ausgabe:
boolean trueboolean trueboolean falseboolean falseboolean trueboolean trueboolean trueboolean falseboolean trueboolean trueboolean falseboolean false
In diesem Artikel wird erläutert, wie Sie überprüfen können, ob PHP mit dem angegebenen Zeitraum übereinstimmt. Weitere verwandte Inhalte finden Sie unter PHP Chinesische Website.
Verwandte Empfehlungen:
So erhalten Sie Zugriff auf Geräteinformationen mit JS
mysql5.7-Exportdatenaufforderung-- sichere Lösung für das Problem mit der -file-priv-Option
So implementieren Sie die debug_backtrace-Methode über PHP, um Codeaufrufe zu verfolgen
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Methode zur Überprüfung, ob der angegebene Zeitraum in PHP übereinstimmt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!