【发布时间】:2019-03-21 01:19:56
【问题描述】:
我有一个查询在给定日期@s_date 查找所有事件。事件 start_datetime 在一天内或 - 事件 end_datetime 在一天内
@s_hash_items = @company.events.where('(start_datetime > ? AND start_datetime < ?) OR
(end_datetime > ? AND end_datetime < ?)',
@s_date.beginning_of_day, @s_date.end_of_day,
@s_date.beginning_of_day, @s_date.end_of_day)
然后我试图从这个数组中找到最新的 end_datetime 值。例如。 14:00、17:30、15:00有3个赛事结束,我想17:30返回。但是,如果有一个事件持续到第二天,我希望最大结果是@s_date 的 23:59:59。
我的代码如下所示
@s_end_hour = [@s_hash_items2.max_by{:end_datetime}.end_datetime, Time.now.end_of_day].sort.first.hour
所以它产生一个具有最新结束日期时间和一天结束的数组,并挑选出较早的一个(sort.first),然后返回小时数,例如17 在这种情况下。
但是,max_by 方法没有找到 end_datetime 最新的事件。它似乎因@s_hash_items 结果的顺序而异。但是@s_hash_items 的顺序无关紧要——我只想要最大值。我在这里做错了什么?谢谢。
【问题讨论】: