Классы JDK Date и Calendar, как известно, не обладают ни функциональностью, ни простотой использования.
Я бы предложил использовать библиотеку Joda Date из http://joda -time.sourceforge.net / , чтобы упростить задачу, но, насколько я знаю, не существует библиотеки, которая быточно соответствует вашим потребностям - я думаю, что вам все равно придется что-то писать самостоятельно.
Похоже, вы заботитесь о датах, а не о времени, поэтому остерегайтесь класса JDK Date, который включает дату и время.Это может привести к неожиданному поведению при сравнении дат, если вы не знаете об этом.Joda может помочь - у него есть, например, класс LocalDate, который представляет «день» - дату без времени.