检查时间范围重叠的问题

时间:2016-08-19 18:32:12

标签: ruby time overlap

问题: 重叠?方法不会返回期望值。

(start_on.to_i..end_on.to_i).overlaps?(ti.start_time.to_i..ti.end_time.to_i)

它返回false,但应该是true。

start_on:2016-08-19 11:00:00 +0200

end_on:2016-08-19 12:00:00 +0200

ti.start_time:2000-01-01 08:00:00 UTC

ti.end_time:2000-01-01 12:00:00 UTC

11:00-12:00之间的时间与08:00-12:00重叠。为什么方法返回false?数据库中的所有列都是时间类型。当前日期由Time.parse方法引起。

我认为问题是日期的第二部分时间有2000年,但是2016年第一部分。任何人都知道如何修复它?

1 个答案:

答案 0 :(得分:1)

您可以尝试通过此strftime("%H:%M")获取时间。 结果:

(start_on.strftime("%H:%M")..end_on.strftime("%H:%M")).overlaps?(ti.start_time.strftime("%H:%M")..ti.end_time.strftime("%H:%M"))