Получить количество месяцев, прошедших в Ruby - PullRequest
0 голосов
/ 03 апреля 2010

Есть ли простой способ получить количество месяцев (за несколько лет), прошедших между двумя датами в ruby?

Ответы [ 3 ]

3 голосов
/ 03 апреля 2010

Я нашел это решение, оно кажется логичным и работает.

startdate = Time.local(2001,2,28,0,0)
enddate = Time.local(2003,3,30,0,0)
months = (enddate.month - startdate.month) + 12 * (enddate.year - startdate.year)

Ссылка: http://blog.mindtonic.net/calculating-the-number-of-months-between-two-dates-in-ruby/

0 голосов
/ 03 апреля 2010

Это относится к крайним случаям месяца (т.е. 15 марта 2009 г. - 12 января 2010 г.)

def months_between( d1, d2)
  d1, d2 = d2, d1 if d1 > d2
  y, m, d = (d2.year  - d1.year), (d2.month - d1.month), (d2.day - d1.day)
  m=m-1 if d < 0
  y, m = (y-1), (m+12) if m < 0
  y*12 + m
end
0 голосов
/ 03 апреля 2010

Вы можете предоставить несколько тестовых случаев, вот одна попытка, не очень проверенная на самом деле:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...