반응형
코드는 다음과 같습니다
<?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'])){
// 당일 시간 일치 여부 점검, 시작 시간 - 당일 0시
if($curhm>=$starttime){
return true;
}
}
// 전일의 요일이 일치하는지 검사하다
if(in_array($prew, $v['week'])){
// 전일 시간 일치 여부 점검, 당일 0시-종료 시간
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)));
}
?>
출력:
boolean true
boolean true
boolean false
boolean false
boolean true
boolean true
boolean true
boolean false
boolean true
boolean true
boolean false
boolean false
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 손글씨 HTTP 프로토콜 (0) | 2022.09.13 |
---|---|
PHPIO 프로그래밍 epoll 구현 방안 (0) | 2022.09.13 |
php 2차원 배열의 여러 1차원 배열의 합성 방법 (0) | 2022.09.12 |
php 배열에서 지정된 여러 열을 반환하는 방법 (0) | 2022.09.12 |
php 로컬 및 원격 파일 존재 여부 판단 (0) | 2022.09.12 |