在我的Rails 4应用程序中,我收到一个月和一年的用户,我想将其作为约会。新的日期应该是下个月的第一天,但我不确定解决这个问题的最佳方法。
目前我有
expiry = Date.new(params[:expYear],params[:expMonth].to_i + 1,1)
但这并不理想,因为如果有人输入12作为月份,我的方法会使当月13不存在(并且年份也不会更新)。
这里有什么有用的功能吗?
答案 0 :(得分:1)
你可以这样做:
year,month = params[:expYear].to_i,params[:expMonth].to_i
Date.new(year,month) + 1.month
或使用end_of_month作为@dax写道:
Date.new(year,month).end_of_month + 1.day
这将解决您的问题
答案 1 :(得分:1)
我认为这会更简单
expiry = Date.new(params[:expYear],params[:expMonth].to_i).next_month
答案 2 :(得分:0)
我用这个解决了 - 抱歉就在你回答user2503775之前
expiry = Date.new(params[:expYear].to_i,params[:expMonth].to_i) + 1.month
注意在完成此操作之前,您必须转换为整数。我还发现,如果将日期参数遗漏,则无论如何都默认为1,这样便于使用
答案 3 :(得分:0)
我会做像
这样的事情Date.new(params[:expYear].to_i,params[:expMonth].to_i,1).advance(months: 1)
答案 4 :(得分:0)
执行类似
的操作Time.zone.local(params[:expYear].to_i, params[:expMonth].to_i, 1, 0, 0, 0)