将月份和年份转换为日期

时间:2013-10-06 14:46:38

标签: ruby-on-rails ruby-on-rails-4

在我的Rails 4应用程序中,我收到一个月和一年的用户,我想将其作为约会。新的日期应该是下个月的第一天,但​​我不确定解决这个问题的最佳方法。

目前我有

expiry = Date.new(params[:expYear],params[:expMonth].to_i + 1,1)

但这并不理想,因为如果有人输入12作为月份,我的方法会使当月13不存在(并且年份也不会更新)。

这里有什么有用的功能吗?

5 个答案:

答案 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)