我有一个查询查找给定日期@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 值。例如有 3 个事件在 14:00、17:30 和 15:00 结束,我想在 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 的顺序并不重要——我只想要最大值。我在这里做错了什么?谢谢。