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

REGRESSION: Problem with java.util.Calendar VM 1.4.2-b28

XMLWordPrintable

    • b28
    • x86
    • windows_nt, windows_2000



      Name: rmT116609 Date: 09/03/2003


      FULL PRODUCT VERSION :
      java version "1.4.2"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
      Java HotSpot(TM) Client VM (build 1.4.2-b28, mixed mode)

      FULL OS VERSION :
      Windows NT Version 4.0

      A DESCRIPTION OF THE PROBLEM :
      Calendar.set() in my program don't work correctly after Calendar.clone() and Calendar.roll(). See prepared test case please.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile and run the program from "Source code for an executable test case"

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      java.vm.version : 1.4.2-b28
        Today : Fri Aug 29 14:27:06 CEST 2003
      First day of week : Sun Aug 24 14:10:19 CEST 2003

      ACTUAL -
      java.vm.version : 1.4.2-b28
        Today : Fri Aug 29 14:27:06 CEST 2003
      First day of week : Fri Aug 29 14:27:06 CEST 2003

      The test case works fine with 1.4.1_05.

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.util.*;
      import java.text.*;

      public class CalendarBug {
        public static void main(String[] args) {
          System.out.println("java.vm.version : " +
      System.getProperty("java.vm.version"));
          Calendar calendar = GregorianCalendar.getInstance(Locale.US);
          int firstDayOfWeek = calendar.getFirstDayOfWeek();
          calendar.roll(Calendar.MONTH, -1);
          calendar.roll(Calendar.MONTH, 1);
          Calendar tempCalendar = (Calendar) calendar.clone();
          System.out.println("Today : " + tempCalendar.getTime());
          tempCalendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
          System.out.println("First day of week : " + tempCalendar.getTime());
        }
      }


      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      change

      tempCalendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);

      with

      int daysFromFirst = firstDayOfWeek - tempCalendar.get(Calendar.DAY_OF_WEEK);
      tempCalendar.roll(Calendar.DAY_OF_WEEK, daysFromFirst);
      (Incident Review ID: 201029)
      ======================================================================

            okutsu Masayoshi Okutsu
            rmandalasunw Ranjith Mandala (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: