在我的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