运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

ruby-on-rails – 循环数月

运维开发网 https://www.qedev.com 2020-08-03 12:30 出处:网络 作者:运维开发网整理
我试图循环数年和数月.如果@ user.created_at是2015年11月,那么我想得到这个输出: November 2015 December 2015 January 2016 February 2016 March 2016 我尝试了以下方法: Hash[(@user.created_at.month..Date.today.month).map { |month| [ month, 0
我试图循环数年和数月.如果@ user.created_at是2015年11月,那么我想得到这个输出:

November 2015
December 2015
January 2016
February 2016
March 2016

我尝试了以下方法:

Hash[(@user.created_at.month..Date.today.month).map { |month| [ month, 0 ] }].merge(...)

但上面的代码返回

stack level too deep

因为它循环11..3.

我怎么能弄清楚这个问题呢?

如果您想计算即将到来的月/年,您可以始终使用 advance

start = @user.created_at.to_date.beginning_of_month

Hash[(0..6).collect { |n| [ start.advance(months: n).month, 0 ] }]

这应该适当地延长几天/几个月.您可能只想坚持日期而不仅仅是月份数.

如果你想做“到今天”,那试试这个:

date = @user.created_at.to_date.beginning_of_month
stop = Date.today.beginning_of_month
hash = { }

while (date <= stop)
  hash[date] = 0

  date = date.advance(months: 1)
end

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号