title: Calculate month difference in Joda Time
body: <p>At the 4th line of code (ignore whitespace &amp; comments) and beyond I'm calculating the month difference between 2 dates. This works, but looks a bit hacky. Is there a better way?</p>
  
  <pre><code>int handleAllowance(LocalDate today) {
  
      int allowance = membership.allowance();
      if (allowance == 0) return 0;
  
      // if update was last month (or earlier)
      int months = today.monthOfYear().getMaximumValue() - today.monthOfYear().getMinimumValue(); // yeah, 12, but just to be 100% correct :-)
      int curMonth = (today.getYear()               * months) + today.              getMonthOfYear();
      int updMonth = (lastAllowanceUpdate.getYear() * months) + lastAllowanceUpdate.getMonthOfYear();
      if (curMonth &gt; updMonth) {
  
          // ...and if today is on or past update day
          int updateDay = Math.min(allowanceDay, today.dayOfMonth().getMaximumValue());
          if (today.getDayOfMonth() &gt;= updateDay) {
  
              // number of months to give allowance (in the rare case this process fails to run for 2 months or more)
              int allowanceMonths = curMonth - updMonth;
  
              // give credits
              final int totalAllowance = allowance * allowanceMonths;
              giveCredits(totalAllowance);
  
              // update day
              lastAllowanceUpdate = lastAllowanceUpdate.plusMonths(allowanceMonths);
  
              // return the allowance given
              return totalAllowance;
  
          }
  
      }
  
      return 0;
  }
  </code></pre>