FULL PRODUCT VERSION :
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 7 64 bit
A DESCRIPTION OF THE PROBLEM :
After c1.set(Calendar.YEAR, 0) the Calendar behavior is unpredicatable: same day (01 Jan 2001) but two different days of the week (Mon and Wed). The state of the object is corrupted.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, 0);
c1.set(Calendar.DAY_OF_YEAR, 1);
Date d1 = c1.getTime();
Calendar c2 = Calendar.getInstance();
c2.setTime(d1);
c2.set(Calendar.YEAR, 2001);
c2.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c2.getTime().toString());
Calendar c3 = Calendar.getInstance();
c3.set(Calendar.YEAR, 2000);
c3.set(Calendar.DAY_OF_YEAR, 1);
Date d2 = c3.getTime();
Calendar c4 = Calendar.getInstance();
c4.setTime(d2); c4.set(Calendar.YEAR, 2001);
c4.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c4.getTime().toString());
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Mon Jan 01 23:47:00 CET 2001
Mon Jan 01 23:47:00 CET 2001
ACTUAL -
Wed Jan 01 23:47:00 CET 2001
Mon Jan 01 23:47:00 CET 2001
ERROR MESSAGES/STACK TRACES THAT OCCUR :
No errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, 0);
c1.set(Calendar.DAY_OF_YEAR, 1);
Date d1 = c1.getTime();
Calendar c2 = Calendar.getInstance();
c2.setTime(d1);
c2.set(Calendar.YEAR, 2001);
c2.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c2.getTime().toString());
Calendar c3 = Calendar.getInstance();
c3.set(Calendar.YEAR, 2000);
c3.set(Calendar.DAY_OF_YEAR, 1);
Date d2 = c3.getTime();
Calendar c4 = Calendar.getInstance();
c4.setTime(d2); c4.set(Calendar.YEAR, 2001);
c4.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c4.getTime().toString());
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
After c1.set(Calendar.YEAR, 0) the behavior is unpredictable.
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 7 64 bit
A DESCRIPTION OF THE PROBLEM :
After c1.set(Calendar.YEAR, 0) the Calendar behavior is unpredicatable: same day (01 Jan 2001) but two different days of the week (Mon and Wed). The state of the object is corrupted.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, 0);
c1.set(Calendar.DAY_OF_YEAR, 1);
Date d1 = c1.getTime();
Calendar c2 = Calendar.getInstance();
c2.setTime(d1);
c2.set(Calendar.YEAR, 2001);
c2.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c2.getTime().toString());
Calendar c3 = Calendar.getInstance();
c3.set(Calendar.YEAR, 2000);
c3.set(Calendar.DAY_OF_YEAR, 1);
Date d2 = c3.getTime();
Calendar c4 = Calendar.getInstance();
c4.setTime(d2); c4.set(Calendar.YEAR, 2001);
c4.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c4.getTime().toString());
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Mon Jan 01 23:47:00 CET 2001
Mon Jan 01 23:47:00 CET 2001
ACTUAL -
Wed Jan 01 23:47:00 CET 2001
Mon Jan 01 23:47:00 CET 2001
ERROR MESSAGES/STACK TRACES THAT OCCUR :
No errors
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, 0);
c1.set(Calendar.DAY_OF_YEAR, 1);
Date d1 = c1.getTime();
Calendar c2 = Calendar.getInstance();
c2.setTime(d1);
c2.set(Calendar.YEAR, 2001);
c2.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c2.getTime().toString());
Calendar c3 = Calendar.getInstance();
c3.set(Calendar.YEAR, 2000);
c3.set(Calendar.DAY_OF_YEAR, 1);
Date d2 = c3.getTime();
Calendar c4 = Calendar.getInstance();
c4.setTime(d2); c4.set(Calendar.YEAR, 2001);
c4.set(Calendar.DAY_OF_YEAR, 1);
System.out.println(c4.getTime().toString());
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
After c1.set(Calendar.YEAR, 0) the behavior is unpredictable.
- duplicates
-
JDK-7072337 (cal) Call to Calendar.get() affects the calendar date and becomes incorrect.
-
- Closed
-