不知道如何正确检查 Carbon 和 Laravel 之间是否有约会

问题描述 投票:0回答:0

这可能比我想象的要简单得多,但我已经摸索了一段时间了。可能太长了,并且坚持使用相同的错误解决方案来摆脱我自己的想法。 所以我需要一些帮助。

我正在构建一个预约系统,假设预约时间为 1 小时。 12-13 岁之间。我可以确保在那段时间没有开始任何约会。但是,我的问题是。如果我创建一个约会,那是 2 小时之久。然后,现在有人可以在 11 点 30 点预订,因为它将在 13 点 30 点结束。这显然是不可能的,因为中间有一个约会。

我将在下面提供我当前的代码,希望你们中的一些人,希望对我来说更聪明,可以看到什么可能是一个简单的解决方案。我已经删除了我所有的测试代码,因为它们没有显示出任何承诺。

        $intervals = CarbonInterval::minutes('15')->toPeriod($start, $end);
        foreach ($intervals as $time) {
            $this_time = Carbon::parse($time)->tz('Europe/Stockholm');
            $current_mission_end_from_time = Carbon::parse(roundToNearestMinuteInterval($this_time->addMinutes($current_mission_length)));

            if ($busy_between->isNotEmpty()) {
                foreach ($busy_between as $busy) {
                    if ($time->between($busy['start'], $busy['end'])) {
                        $busy_times->add($time->format('H:i'));
                    }
                }
            }
        }

最后,所有非可能的时间都将保存到 $busy_times 中,然后我将运行此代码以显示任何空闲时间。

            foreach ($intervals as $time) {
                if (!$busy_times->contains($time->format('H:i'))) {
                    $free_times->add($time->format('H:i'));
                }
            }
laravel php-carbon
© www.soinside.com 2019 - 2024. All rights reserved.