С вашим обновлением я вижу причину проблемы:
Переопределенная compareTo(Calendar anotherCalendar)
является недопустимой реализацией для метода Calendar.compareTo
. Документация для метода Calendar.compareTo()
гласит:
Сравнивает значения времени [..], представленные двумя объектами Календаря.
Но Метод переопределения явно делает что-то еще (он сравнивает поле «firstDayOfWeek», которое имеет смысл только для Calendar
экземпляров, настроенных для разных локалей.)
Если вы можете: убегайте и ищите укрытие от такого испорченного кода!
Если вы не можете: переопределите то, что делает метод оригинальных календарей compareTo
:
@Override
public boolean after(Object when) {
if (when instanceof Calendar) {
Calendar other = (Calendar) when;
return getTimeInMillis() >= other.getTimeInMillis();
}
return super.after(when);
}