railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

日付と日付を比較して、何ヶ月先なのかを計算したい

日付と日付を比較して、何ヶ月先なのかを計算したい。

def month_diff(a, b)
  return 0 if a == b
  greater_day = (a > b)? a: b
  less_day = (a > b)? b: a
  (1..12).each do |num|
    return num-1 if less_day+num.month >= greater_day
  end
end

puts '---- 0 ----'
# 0
puts month_diff(Date.parse("2015-03-10"), Date.parse("2015-02-10"))
puts month_diff(Date.parse("2015-03-10"), Date.parse("2015-02-11"))
puts month_diff(Date.parse("2015-03-10"), Date.parse("2015-02-15"))

puts '---- 1 ----'
# 1
puts month_diff(Date.parse("2015-03-10"), Date.parse("2015-02-09"))
puts month_diff(Date.parse("2015-04-10"), Date.parse("2015-02-10"))
puts month_diff(Date.parse("2015-04-10"), Date.parse("2015-02-11"))
puts month_diff(Date.parse("2015-04-10"), Date.parse("2015-02-15"))

puts '---- 2 ----'
# 2
puts month_diff(Date.parse("2015-04-10"), Date.parse("2015-02-09"))
puts month_diff(Date.parse("2015-05-10"), Date.parse("2015-02-10"))
puts month_diff(Date.parse("2015-05-10"), Date.parse("2015-02-11"))
puts month_diff(Date.parse("2015-05-10"), Date.parse("2015-02-15"))