Обычно используют «финансовый год» (12 месяцев по 30 дней = 360 дней), тут все просто, количество дней между датами:
количество миллисекунд между датами / 1000 миллисекунд / 60 секунд / 60 минут / 24 часа
потом количество дней делим нацело на 360… и т.д…
Но как быть, если необходимо узнать точный календарный период времени между двумя датами?
В JavaScript объект Date умеет перескакивать на следующий месяц, если значение переданное в метод setDate, превышает количество дней в месяце. Выполняя
date.setDate(date.getDate() + 1)
можно в цикле пройтись по всем дням в указанном промежутке и посчитать количество календарных месяцев:
Например, с 10.04.2013 до 20.10.2013 пройдет 5 месяцев 39 дней.
Теперь главный вопрос: 39 дней надо как-то перевести в месяцы, какое количество дней брать? 30 дней, как в начальном месяце или 31, как в конечном месяце? есть ли какое-то правило или соглашение?