基本上我有一个应用程序,用户可以在其中选择从现在到 2 年后的任何一天的时间段。我正在创建一个每天运行的 rake 任务,以便从现在起 2 年内向我的数据库添加一条记录,以便明天仍然有 2 年的时间段选择。

以我目前的逻辑,我很好奇当有闰年时会发生什么,有没有办法让它更健壮以正确处理闰年?我担心我最终要么会完全错过一天,要么会出现重复的一天。

task :generate_timeslots => :environment do

    startDate = Time.now.to_date + 2.years
    endDate = Time.now.to_date + 2.years

    startDate.upto(endDate).each do |d|

    5.times do
       timeslot = Timeslot.create
       timeslot.location_id = 1
       timeslot.timeslot = "#{d} 09:00:00"
       timeslot.save

       timeslot = Timeslot.create
       timeslot.location_id = 1
       timeslot.timeslot = "#{d} 11:00:00"
       timeslot.save

       timeslot = Timeslot.create
       timeslot.location_id = 1
       timeslot.timeslot = "#{d} 13:00:00"
       timeslot.save

       timeslot = Timeslot.create
       timeslot.location_id = 1
       timeslot.timeslot = "#{d} 15:00:00"
       timeslot.save
    end
    end
end

最佳答案

答案是 IF '两年后'包括跨越闰年的 2 月 29 日日期,那么该备份中将包含一个“额外”的一天,以解释日历中 2 月 29 日的“额外”一天。

10-07 16:45