gpt4 book ai didi

ruby - 复杂范围操作帮助 : Determining Available Time Ranges Given Schedules and a Requested Time

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:53 25 4
gpt4 key购买 nike

所以我尝试构建一个 Booking 应用程序并遇到了一些问题。

基本上我有一组客户的约会:

appointments = [
Mon, 29 Dec 2014 11:00:00 PST -08:00..Mon, 29 Dec 2014 12:30:00 PST -08:00,
Mon, 29 Dec 2014 09:00:00 PST -08:00..Mon, 29 Dec 2014 10:30:00 PST -08:00,
Mon, 29 Dec 2014 14:00:00 PST -08:00..Mon, 29 Dec 2014 15:30:00 PST -08:00
]

然后我这次预订:

Mon, 29 Dec 2014 14:00:00 PST -08:00

寻找需要 1 小时 30 分钟的服务,所以我要预订的时间范围是:

requested_time_range = Mon, 29 Dec 2014 14:00:00 PST -08:00..Mon, 29 Dec 2014 15:30:00 PST -08:00

当天的可用时间是:

full_time_range = Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 16:00:00 PST -08:00

使用 range_operators gem( https://github.com/monocle/range_operators ),我可以做到这一点:

a1 = full_time_range - appointments.first

这将导致(范围操作 - 结果到范围数组):

[
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 10:59:59 PST -08:00,
Mon, 29 Dec 2014 12:30:01 PST -08:00..Mon, 29 Dec 2014 15:00:00 PST -08:00
]

因此遍历所有约会,并从 full_time_range 中扣除它们,然后格式化数组以便我们有一个平面数组,我想出了:

available_times = [
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 10:59:59 PST -08:00,
Mon, 29 Dec 2014 12:30:01 PST -08:00..Mon, 29 Dec 2014 15:00:00 PST -08:00,
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 08:59:59 PST -08:00,
Mon, 29 Dec 2014 10:30:01 PST -08:00..Mon, 29 Dec 2014 15:00:00 PST -08:00,
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 13:59:59 PST -08:00,
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 08:59:59 PST -08:00,
Mon, 29 Dec 2014 10:30:01 PST -08:00..Mon, 29 Dec 2014 15:00:00 PST -08:00,
Mon, 29 Dec 2014 07:30:00 PST -08:00..Mon, 29 Dec 2014 13:59:59 PST -08:00
]

现在我不太明白的是如何找到 requested_time_range 是否被 available_times 覆盖。大多数时候它并不准确,因为 requested_time_range 有时在 available_times 数组的一个元素内,有时不在。

有没有一种准确的方法可以确定 requested_time_range 是否适用于我的情况? (我想我必须对 available_times 做些什么,但我不知道该做什么

最佳答案

您需要更改您的 request_time_range 以使其 max 比当前时间少 1 秒(或更多)。

booking_time = some_time # "Mon, 29 Dec 2014 14:00:00 PST -08:00" in your case
# 5399.seconds equals (1.5.hours - 1.second )
request_time_range = booking_time..(booking_time + 5399.seconds)

然后下面的应该工作:

available_times.any? do |time_range|
(time_range.min <= requested_time_range.min) &&
(time_range.max >= requested_time_range.max)
end

关于ruby - 复杂范围操作帮助 : Determining Available Time Ranges Given Schedules and a Requested Time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com