这是代码。基本上,用户选择一个计费日(每月 1 日,或每月 15 日)。start_date
是“合同”开始时,是expire_date
到期时。
因此,如果今天是 3 号,并且他们想在 15 号结算,那么只需转到当月的 15 号。但是,如果今天是第 3 天,并且他们想在第 1 天计费,则获取下个月的第 1 天......等等。
if params[:billing_day] == 1 && start_date.day > 1
expire_date = start_date.at_beginning_of_month.next_month
elsif params[:billing_day] == 15 && start_date.day < 15
expire_date = start_date.change(:day => 15)
elsif params[:billing_day] == 15 && start_date.day > 15
expire_date = start_date.at_beginning_of_month.next_month.change(:day => 15)
else
expire_date = start_date.change(:day => params[:billing_day])
end
这看起来很疯狂,当然它可以在 Rails 中简化。谢谢!