2015-03-04 5 views
1

У меня есть массив объектов datetime, и мне нужно сгруппировать объекты по дате (день). Как я могу сделать t с чистым рубином, без драгоценных камней? Например, у меня есть массивКак группировать по дате массив DateTime в чистом Ruby?

#<DateTime: 2015-03-04T01:30:00-06:00 ((2457086j,27000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T01:45:00-06:00 ((2457086j,27900s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T04:00:00-06:00 ((2457086j,36000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T06:15:00-06:00 ((2457086j,44100s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-03T07:30:00-06:00 ((2457086j,48600s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T10:30:00-06:00 ((2457086j,59400s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T11:30:00-06:00 ((2457086j,63000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-02T14:30:00-06:00 ((2457086j,73800s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T16:00:00-06:00 ((2457086j,79200s,0n),-21600s,2299161j)> 

И мне нужно, чтобы группа как

#<DateTime: 2015-03-02T14:30:00-06:00 ((2457086j,73800s,0n),-21600s,2299161j)> 
----------- 
#<DateTime: 2015-03-03T07:30:00-06:00 ((2457086j,48600s,0n),-21600s,2299161j)> 
----------- 
#<DateTime: 2015-03-04T01:30:00-06:00 ((2457086j,27000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T01:45:00-06:00 ((2457086j,27900s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T04:00:00-06:00 ((2457086j,36000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T06:15:00-06:00 ((2457086j,44100s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T10:30:00-06:00 ((2457086j,59400s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T11:30:00-06:00 ((2457086j,63000s,0n),-21600s,2299161j)> 
#<DateTime: 2015-03-04T16:00:00-06:00 ((2457086j,79200s,0n),-21600s,2299161j)> 
+0

Не могли бы вы предоставить простой вырез из вашего 'массива' объектов' datetime'? –

+0

@CAMOKPYT Не здесь .. В вашем самом вопросе. :) –

+0

Вы хотите группировать записи по дням (4) или по дате (2015-03-04)? – Stefan

ответ

5

Это то, что вы хотите:

require 'date' 

# if you want day of the month 
array_of_datetimes.group_by(&:day) 
# if you want the day of week 
array_of_datetimes.group_by(&:wday) 

Посмотрите на метод Date#day.

Ну, как Stefan addressed, OP хотел что-то еще. Но я не понял этого вопроса. Во всяком случае, это то, что ОП хочет, наконец:

array_of_datetimes.group_by(&:to_date) 
+1

Спасибо, вот что я искал – Pavel

+0

OP [фактически] (http://stackoverflow.com/questions/28850935/how-to-group-by-day-array-of-datetime-in-pure -ruby # comment45969954_28850935) ищет 'group_by (&: to_date)' – Stefan

+0

@Stefan Dunno .. Я проанализировал эту строку _i нужно группировать объекты по дням_ в моем коде .. :) –

Смежные вопросы