PHP自动选择时隙

时间:2018-12-02 14:10:36

标签: php arrays datetime

我有一个数组,我在24个小时内划分了3个时段(每个8小时)

<?php 
$timeSlot = [
    'A' => '06:00-14:00',    // 8 hr
    'B' => '14:00-22:00',    // 8 hr
    'C' => '22:00-06:00',    // 8 hr
];

加载脚本后如何获得当前的时间段(A / B / C)?

2 个答案:

答案 0 :(得分:0)

 $current_hour = date('h'); 

将按时区返回当前时间。然后,您可以使用任何条件语句来分配插槽。

答案 1 :(得分:0)

我相信这应该可以满足您的需求。

反转数组以使其向后循环,如果当前时间大于$ time,则得到一个匹配项。
当循环结束时,我们仍然不知道“ A”实际上是“ A”还是“ C”。
再次比较时间并回显$ slot。

$timeSlot = [
    'A' => '06:00-14:00',    // 8 hr
    'B' => '14:00-22:00',    // 8 hr
    'C' => '22:00-06:00',    // 8 hr
];
$timeSlot = array_reverse($timeSlot);

foreach($timeSlot as $slot => $time){
    if(date("H") >= substr($time, 0,2)){
        break;
    }
}
if($slot == "A"){
    if(date("H") < substr($time, 0,2)){
        $slot = max(array_keys($timeSlot));
    }
}

echo $slot;

https://3v4l.org/MKf1H