2013-10-06 154 views
0

在我的Rails 4应用程序中,我收到用户的一个月和一年,我希望将其作为日期。新的日期应该是下个月的第一天,但​​我不确定如何解决这个问题。将月份和年份转换为日期

目前,我有

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

但这并不理想,因为如果有人进入12月份我的做法会令月13这当然是不存在的(也是当年止跌也不会更新)。

有没有什么有用的功能可以帮到你呢?

+0

什么是':expYear'和':expMonth'?为什么你需要添加一些东西呢? – dax

+0

他们是关于支付卡 – tommyd456

+0

的数据的权利,但用户投入这些领域的价值是什么?为什么你必须添加一些东西?他们没有投入实际的到期日期? – dax

回答

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 

这将解决您的问题

+0

感谢你 - 我刚刚发布了 – tommyd456

0

我解决了它使用这个 - 之前抱歉您的回答user2503775

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

注意你必须转换为整数,然后才能完成。我还发现,如果一天参数是留空,则默认为1无论如何,这样很方便

0

我会做类似

Date.new(params[:expYear].to_i,params[:expMonth].to_i,1).advance(months: 1) 
1

我认为这将是更简单

expiry = Date.new(params[:expYear],params[:expMonth].to_i).next_month 
0

做类似

Time.zone.local(params[:expYear].to_i, params[:expMonth].to_i, 1, 0, 0, 0) 
相关问题