Это действительно один из самых серьезных сбоев в стандартном API Java. Наберитесь немного терпения, и тогда вы получите свое решение в виде нового API даты и времени, указанного в JSR 310 / ThreeTen , который (скорее всего) будет включен в грядущую Java 8.
А пока вы можете обойтись JodaTime .
DateTime dt1 = new DateTime(2000, 1, 1, 0, 0, 0, 0);
DateTime dt2 = new DateTime(2010, 1, 1, 0, 0, 0, 0);
int days = Days.daysBetween(dt1, dt2).getDays();
Его создатель, Стивен Коулборн, кстати, стоит за JSR 310, так что он будет очень похож.
Если вы имеете дело с датами, неплохо было бы заглянуть в библиотеку времени joda для более разумной модели манипулирования датами.
Ну, вы можете удалить третий экземпляр календаря.
GregorianCalendar c1 = new GregorianCalendar();
GregorianCalendar c2 = new GregorianCalendar();
c1.set(2000, 1, 1);
c2.set(2010,1, 1);
c2.add(GregorianCalendar.MILLISECOND, -1 * c1.getTimeInMillis());