2016-03-07 65 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