gpt4 book ai didi

ruby-on-rails - 如何在 Ruby on Rails 中循环几个月

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:53 26 4
gpt4 key购买 nike

我需要在 Ruby on Rails 应用程序中循环几个月。对于每个月,我需要找到给定月份的第一天和最后一天。然后在单独的查询中使用这些日期来查找在这些日期期间发生的事件并对其运行计算。

最初,我尝试过类似的方法:

(11.months.ago.to_date.month..Date.today.month).each do |m|
start_date = '01-#{m}-#{Date.today.year}'.to_date.beginning_of_month
end_date = '01-#{m}-#{Date.today.year}'.to_date.end_of_month
end

当然,如果 11 个月前涉及回到上一年,则在这种情况下不会更新年份。而且,我认为这种类型的 for/each 循环不起作用。我还尝试将数字映射到数组并使用相同的方法,但收到错误。

完成这样的事情的最佳方法是什么?

最佳答案

这是一种方法:

number_of_months = 0..11
number_of_months.to_a.reverse.each do |month_offset|
start_date = month_offset.months.ago.beginning_of_month
end_date = month_offset.months.ago.end_of_month
puts "Start date : #{start_date} End date : #{end_date}"
end

=>

Start date : 2012-01-01 00:00:00 -0700 End date : 2012-01-31 23:59:59 -0700
Start date : 2012-02-01 00:00:00 -0700 End date : 2012-02-29 23:59:59 -0700
Start date : 2012-03-01 00:00:00 -0700 End date : 2012-03-31 23:59:59 -0600
Start date : 2012-04-01 00:00:00 -0600 End date : 2012-04-30 23:59:59 -0600
Start date : 2012-05-01 00:00:00 -0600 End date : 2012-05-31 23:59:59 -0600
Start date : 2012-06-01 00:00:00 -0600 End date : 2012-06-30 23:59:59 -0600
Start date : 2012-07-01 00:00:00 -0600 End date : 2012-07-31 23:59:59 -0600
Start date : 2012-08-01 00:00:00 -0600 End date : 2012-08-31 23:59:59 -0600
Start date : 2012-09-01 00:00:00 -0600 End date : 2012-09-30 23:59:59 -0600
Start date : 2012-10-01 00:00:00 -0600 End date : 2012-10-31 23:59:59 -0600
Start date : 2012-11-01 00:00:00 -0600 End date : 2012-11-30 23:59:59 -0700
Start date : 2012-12-01 00:00:00 -0700 End date : 2012-12-31 23:59:59 -0700

关于ruby-on-rails - 如何在 Ruby on Rails 中循环几个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com