我有这个逻辑来打印日期
def get_y_axis
dates = ""
ed = Date.today
sd = Date.today - 30
sd.upto(ed) do |date|
dates << date.strftime("%b %d")
dates << "|"
end
return dates
end
它打印得像这样
=> "Jan 24|Jan 25|Jan 26|Jan 27|Jan 28|Jan 29|Jan 30|Jan 31|Feb 01|Feb 02|Feb 03|Feb 04|Feb 05|Feb 06|Feb 07|Feb 08|Feb 09|Feb 10|Feb 11|Feb 12|Feb 13|Feb 14|Feb 15|Feb 16|Feb 17|Feb 18|Feb 19|Feb 20|Feb 21|Feb 22|Feb 23|"
问题是我只需要每隔一天......不是每天都有任何想法
答案 0 :(得分:1)
我认为可能有更优雅的解决方案,但这应该可以解决问题:
def get_y_axis
dates = ""
ed = Date.today
sd = Date.today - 30
i = 0
sd.upto(ed) do |date|
if i % 2 == 0
dates << date.strftime("%b %d")
dates << "|"
end
i += 1
end
return dates
end
刚添加'i',每次迭代都会增加。只有当我是偶数时才会追加日期。
答案 1 :(得分:1)
Mark的解决方案很好,但只是想展示each_with_index方法
def get_y_axis
dates = []
ed = Date.today
sd = Date.today - 30
(sd..ed).each_with_index do |date, i|
dates << date.strftime("%b %d") if i % 2 == 0
end
dates.join("|")
end
此外,在您的解决方案中,您将获得“|”在最后一个日期之后附加。我想你不想那样。