现在有个需求,定时任务只在指定时间段内执行,例如邮件只在早上九点以后到晚上十点之前发送,其他时间段内不发送,就下面这个判断就行了,php判断某个时间戳是否在指定的某一天的某个时间段内。
/**
* 判断某个时间戳是否在指定的某一天的某个时间段内
* @param int $timeStamp 需要判断的时间戳
* @param string $type 判断方式,值有:gt lt in
* @param string $timeBeginStr 某天的起始时间字符串,如:8:00:00
* @param string $timeEndStr 某天的结束时间字符串,如:21:30:00
* @param string $date 某一天,默认值为当天,如:2021-1-11
* @return bool
*/
function timeStampIsInPeriod($timeStamp, $type = 'in', $timeBeginStr = '', $timeEndStr = '', $date = '') {
!$date && $date = date('Y-m-d');
switch ($type) {
case 'gt':
if ($timeStamp > strtotime($date . ' ' . $timeBeginStr)) {
return true;
}
break;
case 'lt':
if ($timeStamp < strtotime($date . ' ' . $timeBeginStr)) {
return true;
}
break;
case 'in':
if ($timeStamp > strtotime($date . ' ' . $timeBeginStr) && $timeStamp < strtotime($date . ' ' . $timeEndStr)) {
return true;
}
break;
}
return false;
}