2016-03-07 31 views
0

更新爲了清楚起見:我有一個彩票的開始日期爲星期三或星期六,而另一個彩票的開始日期爲星期二或星期五。考慮到開始日期,我需要無限期地爲這些票證提供未來繪圖日期,並在相應票證的給定日期之間交替。開始日期已經過驗證,可以在本週的這些日子裏進行比賽。在Ruby中設置未來日期

我要檢查的強力球圖紙是在週三或週六的正確日期定連續:

# Increment zero is the first subsequent drawing 
    if increment.zero? 
     if starting_date.saturday? or starting_date.friday? 
     starting_date + 4.days 
     else 
     starting_date + 3.days 
     end 
    elsif increment == 1 
     starting_date + 1.week 
    else 
     if starting_date.saturday? or starting_date.friday? 
     starting_date + (increment/2.0).ceil.weeks + 4.days 
     else 
     starting_date + (increment/2.0).ceil.weeks + 3.days 
     end 
    end 

一些結果我得到...

t.lines[0].draw_date #=> Wed, 09 Mar 2016 
t.lines[1].draw_date #=> Sat, 12 Mar 2016 
t.lines[2].draw_date #=> Wed, 16 Mar 2016 
t.lines[3].draw_date #=> Sat, 19 Mar 2016 
t.lines[4].draw_date #=> Sat, 26 Mar 2016 
t.lines[5].draw_date #=> Sat, 26 Mar 2016 
t.lines[6].draw_date #=> Sat, 02 Apr 2016 
t.lines[7].draw_date #=> Sat, 02 Apr 2016 

好像應該有一個簡單的解決方案。

+3

什麼是't.lines'?什麼是'draw_date'?你期望的結果是什麼? – Stefan

+0

每行應該是從前一天的下一個週三或週六 – tidelake

回答

0

我找到了解決辦法...

if increment.even? 
    if starting_date.saturday? or starting_date.friday? 
     starting_date + (increment/2).weeks + 4.days 
    else 
     starting_date + (increment/2).weeks + 3.days 
    end 
    elsif increment.odd? 
    if starting_date.saturday? or starting_date.friday? 
     starting_date + (increment/2.0).ceil.weeks 
    else 
     starting_date + (increment/2.0).ceil.weeks 
    end 
    end 
+1

你在這裏做什麼,這個代碼是不必要的複雜! –

+0

我需要獲得一組連續彩票的抽獎日期,給定一個索引。通過開始日期和索引以及開始日期的星期幾,我可以計算每個索引的後續提取日期。最終的結果是「星期三>星期六>星期三>星期六等,強力球,星期五>星期五>星期五>星期二。它工作正常。 – tidelake

+0

通過索引你的意思是抵消? –

0
loop do 
    break d if d.wednesday? || d.saturday? 
    d += 1.day 
end 
相關問題