Вы добавили 6 месяцев к datePast
, а не dateFuture
. Вот рабочий код:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class MyCal
{
public static void main( String[] args )
{
GregorianCalendar datePast = new GregorianCalendar();
datePast.add(Calendar.MONTH, -6); // subtract 6 months
GregorianCalendar datePresent = new GregorianCalendar();
GregorianCalendar dateFuture = new GregorianCalendar();
dateFuture.add(Calendar.MONTH, 6); // add 6 months
System.out.println("compare datePresent to datePast: "+datePresent.compareTo(datePast));
System.out.println("compare datePresent to datePresent: "+datePresent.compareTo(datePresent));
System.out.println("compare datePresent to dateFuture: "+datePresent.compareTo(dateFuture));
}
}
Ваши результаты были бы противоречивыми, потому что иногда dateFuture
будет позже, чем datePresent
, в зависимости от того, когда внутренние часы "тикали".
В дополнение ко всему этому я не могу не дать свой стандартный совет по дате и времени на Java: вместо этого используйте Joda Time . Он не несет ответственности за эту конкретную проблему, хотя тот факт, что многие типы являются неизменяемыми, помог бы. Но в целом это намного лучшая библиотека.