JDK-6391777 : JDK 1.3 TZ fix required - Related to SUN BASE RFE 6332148
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.util:i18n
  • Affected Version: 1.3.0,1.3.1_17
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-02-28
  • Updated: 2010-05-10
  • Resolved: 2006-03-09
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
1.3.1_18 b01Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
JDK 1.3 requires a fix to accomodate the 2006 TimeZone Changes for the Commonwealth Games to be held in Melbourne Australia.

  Fixes for JDK 1.4 and 1.5 have already been created by and are documented in SUN BASE BUG 6332148.

JDK 1.3 is still under support and a fix is urgently required.


EVALUATION This fix is based on tzdata2006a.

SUGGESTED FIX There were some missing time zones in the previous workaround fix. I'm replacing it with the new one. (I removed the previous one.)

SUGGESTED FIX This workaround fix includes the U.S. DST schedule changes in 2007.

SUGGESTED FIX A workaround fix is attached. java.util.TimeZoneData (package private class) now has two time zone data tables. One is based on 2006 DST rules. The other is based on 2007 DST rules. When a TimeZone instance is requested, either the 2006 table or the 2007 one is used based on the time of the request. Therefore, this workaround fix doesn't support local time correctly in both 2006 and 2007. That is, TimeZone instances created in 2006 don't support the 2007 DST transition rules. So, it's required to start JVM after 2007-01-01T00:00:00 local *standard* time. I briefly tested the change. Thorough testing is required.

WORK AROUND Use the user.timezone property to specify a GMT offset. For example, the following will use GMT+11:00. $ java -Duser.timezone=GMT+11 YourApp

EVALUATION The time zone support in 1.3.1 and earlier can handle only a single set of daylight saving time transition rules. That limitation was removed in 1.4.0 by rearchitecting the whole time zone support (Olson public zone info support). Some "hacking" would be required to deal with the problem in 1.3.1. However, it's not an option to introduce a new TimeZone subclass in 1.3.1 due to serialization compatibility. (Unfortunately, the TimeZone class was designed to be mutable in JDK 1.1.)