Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 铁路超期_Ruby On Rails_Ruby_Json_Postgresql_Datetime - Fatal编程技术网

Ruby on rails 铁路超期

Ruby on rails 铁路超期,ruby-on-rails,ruby,json,postgresql,datetime,Ruby On Rails,Ruby,Json,Postgresql,Datetime,我正在检查两个日期时间范围是否重叠。我有两个问题 首先,重叠总是返回false,即使我反复提交相同的开始时间,持续时间为1小时(即开始时间为下午3点,结束时间为下午4点,重复提交总是创建一个新会话,而不会通过重叠返回true语句,并返回一个JSON表示培训师已预订)。所以if语句永远不会被命中。 秒,rails中的Overlaps在其方法中使用>=,我无法覆盖它以包含>(端点不返回true,即下午3-4点和下午4-5点不应重叠) 如何在不包含端点的情况下检查两个datetimes并返回true?

我正在检查两个日期时间范围是否重叠。我有两个问题

首先,重叠总是返回false,即使我反复提交相同的开始时间,持续时间为1小时(即开始时间为下午3点,结束时间为下午4点,重复提交总是创建一个新会话,而不会通过重叠返回true语句,并返回一个JSON表示培训师已预订)。所以if语句永远不会被命中。 秒,rails中的Overlaps在其方法中使用>=,我无法覆盖它以包含>(端点不返回true,即下午3-4点和下午4-5点不应重叠)

如何在不包含端点的情况下检查两个datetimes并返回true?我是否将JSON中的日期格式化错误?我的if语句错了吗?它们作为带时区的日期时间(timestampz)存储在postgresql中


使用的三点
版本,不包括右端点

例如:

(1..4).overlaps? (4..8)
# => true

(1...4).overlaps? (4..8)
# => false

除了三重。。。根据@matt的建议,我发现以下内容同样有效

def overlap?(x,y)
 (x.first - y.end) * (y.first - x.end) > 0
end
关键是删除活动记录中包含的>=文件


那么:(4…8)重叠(1…4)呢?那不管用吗?Colud(4…8)。重叠?(1…4)工作,即两个上都有三个点?而且它始终返回真值,所以这不起作用。它应该返回false抱歉,这意味着它总是返回false。这可能是一个格式问题,仅排除其中一个边界。OP希望排除两个范围内的两个边界。看看我的答案。@Humza没有必要排除两个端点。对于OP想要的应用程序,使用带有三个点的范围就足够了。。使用以下“def重叠”(x,y)(x.first-y.end)*(y.first-x.end)>0 end”
def overlap?(x,y)
 (x.first - y.end) * (y.first - x.end) > 0
end