【发布时间】:2010-12-09 05:14:30
【问题描述】:
例子
business_hours['monday'] = [800..1200, 1300..1700]
business_hours['tuesday'] = [900..1100, 1300..1700]
...
然后我有一堆事件占据了其中一些间隔,例如
event = { start_at: somedatetime, end_at: somedatetime }
从某个日期到某个日期迭代事件,我创建另一个数组
busy_hours['monday'] = [800..830, 1400..1415]
...
现在我的挑战是
- 创建包含 business_hours 减去 busy_hours 的 available_hours 数组
available_hours = business_hours - busy_hours
- 给定特定的持续时间,比如 30 分钟,在 available_hours 中找出可用的时间段。在上面的例子中,这样的方法会返回
available_slots['monday'] = [830..900, 845..915, 900..930, and so on]
并不是它以 15 分钟为增量检查 available_hours 是否有指定持续时间的时隙。
感谢您的帮助!
【问题讨论】:
-
这个问题就是调度软件要花很多钱的原因:)
-
我希望我可以使用一些现有的库,但什么也没找到。希望一些 SOers 同胞能够有所启发。
-
看起来你可以扩展 Range 做你想做的事,但这里的问题是你使用 base-10 表示 base-60 值。 900 - 830 = 70,而不是 30。
-
好点。我应该使用不同的对象而不是 Ranges 吗?或者像你说的扩展 Range 并将算术运算符更改为使用 base 60?
-
我想您可能会发现,如果您的代码在内部将一天中的时间表示为 0-95,以 15 分钟为单位,然后您只能将其转换为人类可读的形式,那么您的生活会更轻松用于显示和输入。
标签: ruby-on-rails ruby time calendar range