PHP获取任意时间段,在配置项范围的取值

warning: 这篇文章距离上次修改已过317天,其中的内容可能已经有所变动。
// 给定的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;
none
最后修改于:2023年07月08日 14:59

添加新评论