Ruby 计算某个时间段内指定星期几的时间 跟 某个时间段内所有日期

需求:

   某个活动需按周或按日重复

  1. A活动从 2020-01-01 ~ 2020-05-01 日期间可每天重复参与

  2.A活动在 2020-01-01 ~ 2020-05-01 日期间内每 星期一,星期三, 星期日才可参与

实现:

   数据记录:  begin_date (开始时间) end_date(结束时间)cycle_type(重复类型 none/daily/weekly)  weekdays(参与星期)

 1 begin_date = Date.parse('2020-01-01')
 2 end_date    = Date.parse('2020-05-01')
  weekdays = '1,3,0'
3 if cycle_type == 'weekly' && weekdays.present? 4 # 按周重复 5 weekdays = weekdays.split(',') 6 weekdays.map! { |weekday| weekday.to_i == 0 ? 7 : weekday.to_i } 7 active_dates = (begin_date..end_date).select{ |date| weekdays.include?(date.cwday) } 8 else 9 # 按日重复(因为已过期的时间不能参与,则最早开始时间从今日开始) 10 active_dates = (end_date - begin_date).to_i.times.map{ |i| Date.today + i } 11 active_dates << end_date 12 end

输出:

 按周重复输出

  

 按日重复输出

 

原文地址:https://www.cnblogs.com/lwh-note/p/13679126.html