在我的Rails 4应用程序中,我收到用户的一个月和一年,我希望将其作为日期。新的日期应该是下个月的第一天,但我不确定如何解决这个问题。将月份和年份转换为日期
目前,我有
expiry = Date.new(params[:expYear],params[:expMonth].to_i + 1,1)
但这并不理想,因为如果有人进入12月份我的做法会令月13这当然是不存在的(也是当年止跌也不会更新)。
有没有什么有用的功能可以帮到你呢?
在我的Rails 4应用程序中,我收到用户的一个月和一年,我希望将其作为日期。新的日期应该是下个月的第一天,但我不确定如何解决这个问题。将月份和年份转换为日期
目前,我有
expiry = Date.new(params[:expYear],params[:expMonth].to_i + 1,1)
但这并不理想,因为如果有人进入12月份我的做法会令月13这当然是不存在的(也是当年止跌也不会更新)。
有没有什么有用的功能可以帮到你呢?
你可以这样做:
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
这将解决您的问题
感谢你 - 我刚刚发布了 – tommyd456
我解决了它使用这个 - 之前抱歉您的回答user2503775
expiry = Date.new(params[:expYear].to_i,params[:expMonth].to_i) + 1.month
注意你必须转换为整数,然后才能完成。我还发现,如果一天参数是留空,则默认为1无论如何,这样很方便
我会做类似
Date.new(params[:expYear].to_i,params[:expMonth].to_i,1).advance(months: 1)
我认为这将是更简单
expiry = Date.new(params[:expYear],params[:expMonth].to_i).next_month
做类似
Time.zone.local(params[:expYear].to_i, params[:expMonth].to_i, 1, 0, 0, 0)
什么是':expYear'和':expMonth'?为什么你需要添加一些东西呢? – dax
他们是关于支付卡 – tommyd456
的数据的权利,但用户投入这些领域的价值是什么?为什么你必须添加一些东西?他们没有投入实际的到期日期? – dax