我想在视图中打印过去14天的每一天的统计数据。
为此,我的目标是创建一系列日期,从今天开始到第14天结束(回到过去),在视图中迭代.each
。
most_recent = Date.current
least_recent = Date.current.ago(14.days)
这不起作用:
most_recent..least_recent.each
这似乎不起作用:
(most_recent).downto(least_recent).each
任何想法如何实现这一目标?
答案 0 :(得分:8)
我使用Numeric#ago
:
14.downto(0) do |i|
date = i.days.ago
end
您的尝试无效,因为most_recent
大于least_recent
(我在这里使用整数,但日期相同):
(0..-14).to_a #=> []
-14.downto(0).to_a #=> []
这些方法仅适用于“从低到高”:
(-14..0).to_a #=> [-14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
0.downto(-14).to_a #=> [-14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
答案 1 :(得分:5)
这是如何使用Date#downto
的?
require 'date'
dt = Date.today
dt.downto(dt-5){|d| puts d }
输出:
2013-09-27
2013-09-26
2013-09-25
2013-09-24
2013-09-23
2013-09-22
答案 2 :(得分:4)
试试这个:
14.times do |i|
date = Date.today-i
#do stuff with date
end
答案 3 :(得分:3)
还有step method;踩着-1可以追溯到时间。
require 'date'
most_recent = Date.today
least_recent = most_recent - 14
most_recent.step(least_recent, -1){|d| puts d}
#=> 2013-09-27
#=> 2013-09-26
#=> 2013-09-25
#=> 2013-09-24
#=> 2013-09-23
#=> ...
答案 4 :(得分:0)
((Date.today - 14)...(Date.today)).reverse_each do |d|
# YOUR CODE GOES HERE.. puts d
end