【问题标题】:PHP Auto pick time slot [closed]PHP自动选择时间段[关闭]
【发布时间】:2019-05-03 23:56:13
【问题描述】:

我有一个数组,我将 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)?

【问题讨论】:

  • 包含/不包含哪个开始/结束时间?
  • 插槽 C 将转到下一个日期,因为它将超过 00:00 (12AM)
  • 这不是卢克的问题。 14:00 在哪个插槽中? A 还是 B?
  • 我将首先重新构造该数组,使其具有用于“开始”和“结束”的单独键。然后与当前时间比较。
  • 'B'可以看成14:00:01

标签: php arrays datetime


【解决方案1】:
 $current_hour = date('h'); 

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

【讨论】:

    【解决方案2】:

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

    反转数组以将其向后循环,如果当前时间大于 $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

    【讨论】:

    • 在早上 6 点到早上 7 点,它返回 C,但它应该返回 A
    • 发现问题。我有&lt;=,应该是&lt;
    • @Amin 有用吗?它能回答你的问题吗?
    • 是的,确实如此。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多