我有一些特定的功能来测试日期.我遇到了绊脚石.我需要从今天开始向后循环14天以生成日期,但必须忽略周末.
例:
今天是星期一,回到1天会把我带到星期五.回去2天会把我带到星期四.我们总是落后两天.所以,当我在星期二降落时,需要去周五和周一到周四.我让它工作了一周,但接下来的7天又开始了同样的周期.
这是我到目前为止:
def date_calc_minus(number)
date = Date.today - number.to_i
day = date.strftime('%a %e %B %Y').split(' ')[0]
case
when day.include?('Sun')
puts day
calculated_date = date - 2
when day.include?('Sat')
puts day
calculated_date = date - 2
else
puts day
calculated_date = date - 2
if calculated_date.strftime('%a %e %B %Y').split(' ')[0].include?('Sun')
calculated_date = calculated_date - 2
elsif calculated_date.strftime('%a %e %B %Y').split(' ')[0].include?('Sat')
calculated_date = calculated_date - 2
end
end
calculated_date.strftime('%a %e %B %Y')
end
start = 1
stop = 14
range = start.to_i.upto(stop.to_i).to_a
range.each_with_index do |number, index|
puts date_calc_minus(number)
end
#=>
Sun
Fri 27 April 2018
Sat
Thu 26 April 2018
Fri
Wed 25 April 2018
Thu
Tue 24 April 2018
Wed
Mon 23 April 2018
Tue
Fri 20 April 2018
Mon
Thu 19 April 2018
Sun
Fri 20 April 2018
Sat
Thu 19 April 2018
Fri
Wed 18 April 2018
Thu
Tue 17 April 2018
Wed
Mon 16 April 2018
Tue
Fri 13 April 2018
Mon
Thu 12 April 2018
Run Code Online (Sandbox Code Playgroud)
我明白这不是很漂亮,但我一直在看它太久了,我已成为隧道视野.有没有一种简单的方法来实现这一目标?
注意使用该sunday?方法来确定某个日期是否恰好是星期日.
require "date"
def date_calc_minus(number)
d = Date.today
number.times do
d -= 1
d -= 2 if d.sunday?
end
d
end
Run Code Online (Sandbox Code Playgroud)