-
Bug
-
Resolution: Fixed
-
P3
-
1.4.2
-
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)
======================================================================
- duplicates
-
JDK-4950950 Calendar getActualMaximum ( DAY_OF_WEEK_IN_MONTH ) incorrect value
-
- Closed
-