首页 > 解决方案 > 如何在数组中创建时间范围步长这样的结果 - PHP

问题描述

我需要像示例这样的数组,如果可以为 step、start、end 设置选项会更好

    [
        [
            "07:30:00",
            "08:00:00",
        ],
        [
            "08:00:00",
            "08:30:00",
        ],
            ....
        [
            "23:30:00",
            "00:00:00",
        ],
    ]

标签: phplaravel

解决方案


我猜最好的解决方案是:

function timeSteps($step, $start, $end){
    $stepHours = substr($step, 0, 2);
    $stepMinutes = substr($step, 3, 2);
    $stepSeconds = substr($step, 6, 2);

    $startTime = Carbon::createFromFormat('H:i:s', $start);
    $endTime = Carbon::createFromFormat('H:i:s', $end);

    $result = [];

    while ($startTime->lt($endTime)) {
        $item = [];
        array_push($item, $startTime->format('H:i:s'));
        
        $startTime->addHours($stepHours);
        $startTime->addMinutes($stepMinutes);
        $startTime->addSeconds($stepSeconds);
        
        array_push($item, $startTime->format('H:i:s'));
        
        array_push($result, $item);
    }

    return $result;
}

你可以这样称呼它:

timeSteps("00:30:00", "08:00:00", "10:00:00")

推荐阅读