在 rails 中用 Ice_Cube 拆分数据
splite date with Ice_Cube in rails
我想创建一个 Api 它得到 start_time 和 end_time 以及应该拆分开始时间和结束时间的月数以及 return 一个集合我可以遍历它并将数据保存到数据库中。
例如每周从 14:05 到 18:30 的星期日。
这就是我所做的一切:
def create_recurring_schedules
数字=0
如果反复出现
时间表 = Schedule.new(start_time, end_time: end_time)
schedule.add_recurrence_rule Rule.weekly
if month == 12
dates = schedule.occurrences_between(start_time, start_time + 1.year)
elsif month == 3
logger.info "################### The 3 month is #{self.s_month} #############################################"
dates = schedule.occurrences_between(start_time, start_time + 3.month)
elsif month == 6
logger.info "################### The 6 month is #{month} ###########################################"
dates = schedule.occurrences_between(start_time, start_time + 6.month)
elsif month == 1
dates = schedule.occurrences_between(start_time , start_time + 1.months)
end
dates.each do |date|
number +=1
logger.info "################### Start number #{number} #############################################"
ClinicSchedule.create(user_id: user_id, clinic_id: clinic_id, month: month,
start_time: date.start_time.strftime("%Y-%m-%d %H:%M"),
end_time: date.end_time.strftime("%Y-%m-%d %H:%M"),
date: date.strftime("%Y-%m-%d"), recurring: true,
recurrence_id: recurrence_id)
logger.info "################### Recurrence ID: "
logger.info recurrence_id
logger.info "################### End Recurrence ID ###########################################################"
end
end
end
我遇到的问题就是这个案例:
dates = schedule.occurrences_between(start_time , start_time + 1.months)
当我从四个月后设置 start_time 时,例如 2017-10-13 16:20。只给35周,不给4个月后开始的53周
您的问题来自 s_time=(Time.now+start_time).to_i
。 start_time
似乎是 ActiveSupport::TimeWithZone
的一个实例。您正在尝试添加 Time
和 ActiveSupport::TimeWithZone
这可能不是您想要实现的目标。
schedule.occurrences_between
至少需要两个 ActiveSupport::TimeWithZone
实例。因此,您可以这样做:
s_time = Time.zone.now
e_time = s_time + 1.month
schedule.occurrences_between(s_time, e_time)
UPD:实际上,您不需要那么长的带月份的条件:
schedule.occurrences_between(start_time, start_time + month.months)
而不是定义和递增 number
使用 #each_with_index
我想创建一个 Api 它得到 start_time 和 end_time 以及应该拆分开始时间和结束时间的月数以及 return 一个集合我可以遍历它并将数据保存到数据库中。 例如每周从 14:05 到 18:30 的星期日。 这就是我所做的一切:
def create_recurring_schedules 数字=0 如果反复出现 时间表 = Schedule.new(start_time, end_time: end_time)
schedule.add_recurrence_rule Rule.weekly
if month == 12
dates = schedule.occurrences_between(start_time, start_time + 1.year)
elsif month == 3
logger.info "################### The 3 month is #{self.s_month} #############################################"
dates = schedule.occurrences_between(start_time, start_time + 3.month)
elsif month == 6
logger.info "################### The 6 month is #{month} ###########################################"
dates = schedule.occurrences_between(start_time, start_time + 6.month)
elsif month == 1
dates = schedule.occurrences_between(start_time , start_time + 1.months)
end
dates.each do |date|
number +=1
logger.info "################### Start number #{number} #############################################"
ClinicSchedule.create(user_id: user_id, clinic_id: clinic_id, month: month,
start_time: date.start_time.strftime("%Y-%m-%d %H:%M"),
end_time: date.end_time.strftime("%Y-%m-%d %H:%M"),
date: date.strftime("%Y-%m-%d"), recurring: true,
recurrence_id: recurrence_id)
logger.info "################### Recurrence ID: "
logger.info recurrence_id
logger.info "################### End Recurrence ID ###########################################################"
end
end
end
我遇到的问题就是这个案例:
dates = schedule.occurrences_between(start_time , start_time + 1.months)
当我从四个月后设置 start_time 时,例如 2017-10-13 16:20。只给35周,不给4个月后开始的53周
您的问题来自 s_time=(Time.now+start_time).to_i
。 start_time
似乎是 ActiveSupport::TimeWithZone
的一个实例。您正在尝试添加 Time
和 ActiveSupport::TimeWithZone
这可能不是您想要实现的目标。
schedule.occurrences_between
至少需要两个 ActiveSupport::TimeWithZone
实例。因此,您可以这样做:
s_time = Time.zone.now
e_time = s_time + 1.month
schedule.occurrences_between(s_time, e_time)
UPD:实际上,您不需要那么长的带月份的条件:
schedule.occurrences_between(start_time, start_time + month.months)
而不是定义和递增 number
使用 #each_with_index