2011-03-22 16 views
5

Me gustaría tener una función que llegar start_day y END_DAY como parámetro de dos tipo de cadena y devuelve la lista de fechas dentro del intervalo de fechas especificado incluyendo los días de inicio y fin, cualquiera puede ofrecer un bloque de código eficiente? tryRuby on Rails función para este

def get_list_of_dates(start_date, end_date) 
    ... 
    return dates 
end 

Respuesta

5
def get_list_of_dates(start_date, end_date) 
    (Date.parse(start_date)..Date.parse(end_date)).to_a 
end 

Si Date.parse no acepta la cadena (no acepta muchos formatos), es posible que desee consultar chronic.

0

Si ha ActiveSupport:

start_date = Date.parse(start_date) 
end_date = Date.parse(end_date) 
for date in start_date..end_date 
    puts date 
end 

Eso te dará:

... 
Sat, 05 Mar 2011 
Sun, 06 Mar 2011 
Mon, 07 Mar 2011 
Tue, 08 Mar 2011 
Wed, 09 Mar 2011 
... 

Con ActiveSupport que puede hacer cosas como:

# if you exclude to_date you get all Times in between 
for date in 17.days.ago.to_date..Date.yesterday 
    puts date 
end