Вам следует рассмотреть возможность использования библиотеки joda-time, которая предоставляет гораздо более полезный интерфейс даты и времени. Например, ваш вопрос решается так: Days.daysBetween(startInstant, endInstant).getDays()
Что касается использования стандартного Календаря - я не могу рассмотреть лучшую альтернативу, чем использование Calendar.get (Calendar.DAY_OF_YEAR) - это даст вам возможность получать разницу в днях в течение одного календарного года. Чтобы распространить этот метод на несколько лет, я могу предложить только повторять все промежуточные годы между моментами начала и конца, суммируя Calendar.getActualMaximum (DAY_OF_YEAR). Не очень удобный способ, но ...