Насколько я понимаю, этот код не должен давать разные результаты между третьим и вторым примерами.
0> Time.utc(1999, 12, 29) - Time.utc(1999, 12, 29)
=> 0.0
0> Time.utc(1999, 12, 29) + 1.month - Time.utc(1999, 12, 29)
=> 2678400.0
0> 1.month.to_i
=> 2592000
Как ни странно, когда я конвертирую все в Fixnum, все снова работает, как и ожидалось.
0> Time.utc(1999, 12, 29).to_i + 1.month.to_i - Time.utc(1999, 12, 29).to_i
=> 2592000
Что здесь происходит?