A DESCRIPTION OF THE PROBLEM : GregorianCalendar.roll(Calendar.DAY_OF_WEEK, true) incorrectly modifies the year field when rolling from Saturday to Sunday across year boundaries, violating the documented behavior that roll() should not change larger fields. ---------- BEGIN SOURCE ---------- import java.util.Calendar; import java.util.GregorianCalendar; public class RollTest { public static void main(String args[]) { Calendar cal = new GregorianCalendar(); cal.set(2020, Calendar.JANUARY, 4); System.out.println("Before roll: " + cal.getTime() + ", Year: " + cal.get(Calendar.YEAR)); cal.roll(Calendar.DAY_OF_WEEK, 1); System.out.println("After roll: " + cal.getTime() + ", Year: " + cal.get(Calendar.YEAR)); } } ---------- END SOURCE ----------
|