Update Date: Thu Mar 08 00:00:00 MST 2007
Bug ID: 6530336
Synopsis: (tz) CRITICAL DST bug in latest jdk releases
Category: java
Subcategory: classes_text
State: 8-Fix Available
Description:
FULL PRODUCT VERSION :
All current versions (1.4.2_13, 1.5.0_11, 1.6)
ADDITIONAL OS VERSION INFORMATION :
Anything
A DESCRIPTION OF THE PROBLEM :
The recent change to the definition of EST timezone to remove DST awareness has broken basic functionality in date handling.
The problem is very simple. The DateFormat parser uses the contents of String zoneStrings in class DateFormatSymbols to identify the timezone based on the zone value in the input date string.
The zoneStrings array defines "EST" before "America/New_York" so sets the timezone for the parser to the now non-DST aware "EST" zone.
This is a very very serious problem.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and run the test code below as shown.
First run as java -Duser.timezone=America/New_York Moh
and the output is correct: Wed Jun 06 14:00:00 EDT 2007
Then run as java -Duser.timezone=America/Los_Angeles Moh
and the output is wrong: Wed Jun 06 12:00:00 PDT 2007
The correct output would be 11:00:00 PDT 2007.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
In the test case when in the Los Angeles time zone I expect the time to be 11:00:00 PDT but it wrongly displays 12:00:00 PDT.
ACTUAL -
As above.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.text.;
import java.util.;
public class Moh {
public static void main(String args) throws Exception {
SimpleDateFormat timestampFormatWithZone = new SimpleDateFormat("yyyy-MM-dd HH:mm zzz");
Date date = timestampFormatWithZone.parse("2007-06-06 14:00 EDT");
// Calendar calendar = timestampFormatWithZone.getCalendar();
System.out.println(date);
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :This is a very serious problem which has required us to scramble. We are actively deleting the "EST" file from jre/lib/zi to restore prior behaviour, and particularly to ensure that date parsing works correctly.
Date Modified: 2007-03-02 09:25:08 GMT+00:00
Work Around:
Please remove <JDK_HOME>/jre/zi/EST (or <JRE_HOME>/lib/zi/EST). This will enable the old EST to America/New_York mapping.
Date Modified: 2007-03-02 13:17:00 GMT+00:00
Suggested Fix:
Evaluation:
Fixed by patch:
Integrated in Build:
Duplicate of:
Related Change Request(s):
6466476
Date Modified: 2007-03-08 20:00:29 GMT+00:00