Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7115544

Calendar.set wrong behavior

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 7
    • core-libs
    • x86
    • windows_7

      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.

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: