每隔一个日期

时间:2011-02-24 00:48:52

标签: ruby-on-rails ruby loops

我有这个逻辑来打印日期

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|"

问题是我只需要每隔一天......不是每天都有任何想法

2 个答案:

答案 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

此外,在您的解决方案中,您将获得“|”在最后一个日期之后附加。我想你不想那样。