Ruby on rails 给定开始和结束日期,如何循环直到到达结束日期?

Ruby on rails 给定开始和结束日期,如何循环直到到达结束日期?,ruby-on-rails,Ruby On Rails,我有一个datetime类型的start_dt和end_dt对象 如何从开始日期开始循环,每次递增1天,直到到达结束日期?您可以在日期和日期时间对象上使用upto和downto方法: start_dt = DateTime.parse('2018-01-01') end_dt = DateTime.parse('2018-01-15') start_dt.upto(end_dt) { |date| puts date } 2018-01-01T00:00:00+00:00 2018-01-02

我有一个datetime类型的start_dt和end_dt对象


如何从开始日期开始循环,每次递增1天,直到到达结束日期?

您可以在
日期
日期时间
对象上使用
upto
downto
方法:

start_dt = DateTime.parse('2018-01-01')
end_dt = DateTime.parse('2018-01-15')

start_dt.upto(end_dt) { |date| puts date }
2018-01-01T00:00:00+00:00
2018-01-02T00:00:00+00:00
2018-01-03T00:00:00+00:00
2018-01-04T00:00:00+00:00
2018-01-05T00:00:00+00:00
2018-01-06T00:00:00+00:00
2018-01-07T00:00:00+00:00
2018-01-08T00:00:00+00:00
2018-01-09T00:00:00+00:00
2018-01-10T00:00:00+00:00
2018-01-11T00:00:00+00:00
2018-01-12T00:00:00+00:00
2018-01-13T00:00:00+00:00
2018-01-14T00:00:00+00:00
2018-01-15T00:00:00+00:00


end_dt.downto(start_dt) { |date| puts date }
2018-01-15T00:00:00+00:00
2018-01-14T00:00:00+00:00
2018-01-13T00:00:00+00:00
2018-01-12T00:00:00+00:00
2018-01-11T00:00:00+00:00
2018-01-10T00:00:00+00:00
2018-01-09T00:00:00+00:00
2018-01-08T00:00:00+00:00
2018-01-07T00:00:00+00:00
2018-01-06T00:00:00+00:00
2018-01-05T00:00:00+00:00
2018-01-04T00:00:00+00:00
2018-01-03T00:00:00+00:00
2018-01-02T00:00:00+00:00
2018-01-01T00:00:00+00:00
这个怎么样

current_date = object.start_dt
end_date = object.end_dt

loop do
  ## do something

  ## (`:beginning_of_day` and `:end_of_day` may help you)
  current_date += 1.day
  break if current_date > end_date
end
尝试以下方法

start_date = Time.now - 30.day
=> 2017-12-16 09:19:51 +gmt
end_date = Time.now
=> 2018-01-15 09:19:44 +gmt

start_date = Date.parse "#{start_date}"
end_date = Date.parse "#{end_date}"

date_count = (end_date - start_date).to_i
=> 30

<% (1..date_count).each do |i| %>
  #Code to display using <%= i %> that you want to display    
<% end %>
start\u date=Time.now-30.day
=>2017-12-16 09:19:51+gmt
结束日期=Time.now
=>2018-01-15 09:19:44+gmt
start_date=date.parse“#{start_date}”
end_date=date.parse“#{end_date}”
日期计数=(结束日期-开始日期)
=> 30
#要使用要显示的代码进行显示
希望对您有所帮助

尝试以下方法:

(DateTime.parse('2018-01-01')..DateTime.parse('2018-01-15')).each do |date|

  puts date

end