2013-10-06 157 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) 
相關問題