I faced the same challenge where I needed to go back by 1 day (should be able to roll back by one even if previous day falls into previous year or months).
I did following, basically subtracted by 24 hours for 1 day. someDateInGregorianCalendar.add(Calendar.HOUR, -24);
Alternatively, I could also do
someDateInGregorianCalendarGregorianCalendar cal = new GregorianCalendar(); cal.set(Calendar.YEAR, 2021); cal.set(Calendar.MONTH, 0); cal.set(Calendar.DATE, 1); System.out.println("Original: " + cal.getTime()); cal.add(Calendar.HOURDATE, -241); System.out.println("After adding DATE: " + cal.getTime()); OUTPUT:
Original: Fri Jan 01 15:08:33 CET 2021 After adding DATE: Thu Dec 31 15:08:33 CET 2020