PHP获取任意时间段,在配置项范围的取值
warning:
这篇文章距离上次修改已过578天,其中的内容可能已经有所变动。
// 给定的JSON数据配置项
$jsonData = '{"23:00-05:00":"14","05:00-23:00":"10"}';
// 将JSON字符串解码为关联数组
$config = json_decode($jsonData, true);
// 传入的任意时间段
$curr_time = time();
// 将当前时间转换为小时和分钟的格式
$curr_hour = date('H', $curr_time);
$curr_minute = date('i', $curr_time);
// 计算对应时间有多少秒
$curr_second = ($curr_hour * 3600) + ($curr_minute * 60);
// 判断给定时间段所属的配置项
$value = null;
foreach ($config as $key => $val) {
// 将时间范围拆分为开始时间和结束时间
list($begTime, $endTime) = explode('-', $key);
// 将开始时间和结束时间的小时和分钟分别拆分
list($begHour, $begMinute) = explode(':', $begTime);
list($endHour, $endMinute) = explode(':', $endTime);
// 计算对应时间有多少秒
$beg_second = ($begHour * 3600) + ($begMinute * 60);
$end_second = ($endHour * 3600) + ($endMinute * 60);
// 验证时间是否跨夜
if ($beg_second > $end_second){
if ($curr_second >= $beg_second || $curr_second < $end_second){
$value = $val;
}
}else{
if ($curr_second >= $beg_second && $curr_second < $end_second){
$value = $val;
}
}
}
echo $value;