如何按小时对DateTime进行排序:分钟(忽略日期)

时间:2015-11-29 03:58:33

标签: ruby-on-rails ruby datetime

我需要按小时订购@events,没有日期。 我有代码:

<% @events.sort_by(&:start_time).each do |event| %>
    <%= event.start_time.strftime('%H:%M') %>
<% end %>

结果是:

02:00 # => 2015-11-27 02:00:00 +0200
03:05 # => 2015-11-27 03:05:00 +0200
04:00 # => 2015-11-27 04:00:00 +0200
`03:45 # => 2015-12-04 03:45:00 +0200`

所需的结果是:

02:00 # => 2015-11-27 02:00:00 +0200
03:05 # => 2015-11-27 03:05:00 +0200
'03:45 # => 2015-12-04 03:45:00 +0200'
04:00 # => 2015-11-27 04:00:00 +0200

问题是最后一行有更新的日期。 如何对@events进行排序以获得上述结果?

2 个答案:

答案 0 :(得分:4)

@events.sort_by(&:start_time)应该是......

@events.sort_by{|ev| ev.start_time.strftime('%H:%M')}

@events.sort_by{|ev| [ev.start_time.hour, ev.start_time.minute]}

我使用您提供的相同输入尝试过它们并且它们完美地工作。祝你好运。

答案 1 :(得分:3)

请尝试以下代码:

@events.sort_by{|e| e.start_time.strftime('%H:%M')}