FULL PRODUCT VERSION :
All current versions (1.4.2_13, 1.5.0_11, 1.6)
ADDITIONAL OS VERSION INFORMATION :
Anything
CUSTOMER 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."
The customer feels this is a serious issue.
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 ----------