A simple program to create a GregorianCalendar with year=2004, month=1, day=29 gives 2004-Mar-1 instead of 2004-Feb-29 e.g. SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMMM d HH:mm:ss"); GregorianCalendar gc = new GregorianCalendar(2004, 1, 29, 0, 0, 0); System.out.println(sdf.format(gc.getTime()) + " " + gc.getTimeInMillis()); (Sun j2sdk 1.4.2 gives 2004-Feb-29)
This bug is no longer valid for mainline. I do not have a 3.4 build.
This was fixed for 3.4.0. I think it is a dup of another bug too.