检查时间范围重叠的问题

Issue with checking time ranges overlapping

问题: 重叠?方法不 return 期望值。

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

它return是假的,但应该是真的。

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 重叠。为什么方法 return 是错误的?数据库中的所有列都是时间类型。当前日期由 Time.parse 方法引起。

我想问题出在日期的第二部分是 2000 年,但第一个是 2016 年。有人知道如何解决吗?

你可以尝试通过这个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"))