GregorianCalendar устарел, и вы больше не должны его использовать. Он был громоздким и был заменен «новым» java .time модулем, поскольку Java 8.
Тем не менее, если вам нужно сравнить с использованием экземпляров G C, вы можете легко рассчитать время, используя миллисекунды между датами, например:
GregorianCalendar date1 = new GregorianCalendar();
GregorianCalendar date2 = new GregorianCalendar();
// Adding 15 days after the first date
date2.add(GregorianCalendar.DAY_OF_MONTH, 15);
long duration = (date2.getTimeInMillis() - date1.getTimeInMillis() )
/ ( 1000 * 60 * 60 * 24) ;
System.out.println(duration);
Если вы хотите использовать новый API времени, будет работать следующий код.
LocalDate date1 = LocalDate.now();
LocalDate date2 = date1.plusDays(15);
Period period = Period.between(date1, date2);
int diff = period.getDays();
System.out.println(diff);
Если вам нужно преобразовать типы (например, вы работаете с унаследованным кодом), вы можете сделать это следующим образом:
LocalDate date3 = gcDate1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate date4 = gcDate2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Также я почти уверен, что этот вопрос задавался снова и снова, поэтому убедитесь, что вы выполняете правильный поиск, прежде чем спрашивать.