Rails5で、下記 array1 を元に、array2 を生成したいです。シンプルな方法を教えて下さい。
ruby
1array1 = ["12/28", "30", "31", "1/1", "2", "4"] 2array2 = ["2018/12/28", "2018/12/30", "2018/12/31", "2019/01/01", "2019/01/02", "2019/01/04"]
2018年というのは今年で、2019年は来年(未来)という想定です。
ruby
1array1 = ["12/28", "30", "31", "1/1", "2", "4"] 2 3this_year = Time.now.strftime("%Y") #=> "2018" 4this_month = Time.now.strftime("%m") #=> "08" 5year = "" 6month = "" 7 8array2 = [] 9array1.each do |elm| 10 if elm.match(/^(\d{1,2})/(\d{1,2})$/) 11 month = $1 #=> ex. "12", "1" 12 day = $2 13 14 if month.to_i <= this_month.to_i #=> ex. 12 <= 8, 1 <= 8 15 year = (this_year.to_i + 1).to_s #=> "2019" 16 else 17 year = this_year 18 end 19 20 else 21 day = elm 22 end 23 24 d = Time.strptime(year + "/" + month + "/" + day, "%Y/%m/%d").strftime("%Y/%m/%d") 25 array2 << d 26end 27#=> ["2018/12/28", 28 "2018/12/30", 29 "2018/12/31", 30 "2019/01/01", 31 "2019/01/02", 32 "2019/01/04"] 33
一応できたのですが、どうも強引な感じがして、もっと上手い書き方を知りたいです。
回答1件
あなたの回答
tips
プレビュー