JDK-4495052 : RFE: Java should support complete set of Olson time zones
  • Type: Enhancement
  • Component: core-libs
  • Sub-Component: java.util:i18n
  • Affected Version: solaris_9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_9
  • CPU: sparc
  • Submitted: 2001-08-22
  • Updated: 2001-09-25
  • Resolved: 2001-09-25
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 Availabitlity Release.

To download the current JDK release, click here.
1.4.0 beta3Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Java support only ~300 time zones while Olson defines ~430 unique time zones.

The Solaris Management Console (SMC) needs access to the full set of Olson zoneinfo time zones in Solaris 9 through Java TimeZone interfaces.  

(See attached e-mail for background.)

CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: merlin-beta3 FIXED IN: merlin-beta3 INTEGRATED IN: merlin-beta3

PUBLIC COMMENTS Java support only ~300 time zones while Olson defines ~430 unique time zones. The Solaris Management Console (SMC) needs access to the full set of Olson zoneinfo time zones in Solaris 9 through Java TimeZone interfaces. SMC uses getAvailableID() to get a list of all available timezones on the current system. It displays the resulting list in the System Information Tool. Customers can select a timezone from the list to be the new system default timezone. SMC requires that getAvailableID() return the complete list of available timezones in the Olson public database. Currently, JDK1.4 only returns a subset of these timezones (~300 instead of the full 430 time zones). An internal tool, called "javazic", which is equivalent to Solaris zic(1M) is provided to generate zoneinfo data files. This tool will be for sun private use only in Merlin. Since the javazic compiler is not publically available in JDK1.4, the only way SMC customers can access the full set of Olson zoneinfo data in Solaris 9 is through the Java TimeZone interfaces. Bug 4230123 cited performance as an issue for creating large numbers of time zone objects. " * Performance [bugID: 4230123] When initializing time zone data in a Java runtime, it creates about 320 SimpleTimeZone objects and a hash table with those objects so that a time zone can be searched with a time zone ID (e.g., TimeZone.getTimeZone(String ID)). However, usually an application that deals with date/time requires only one local time zone. Creating ~320 SimpleTimeZone objects is a waste of CPU cycles (~200ms on 200MHz Ultra-2) and memory space (~50KB). Also, the current SimpleTimeZone defines a rule for daylight saving time schedule, such as "the first Sunday of April", and the rule has to be interpreted with a concrete date at run-time. This run-time calculation also affects run-time performance." The adoption of the Olson public source (zoneinfo) solution addressed the performance issues cited in Bug 4230123. Eliminating the SimpleTimeZone objects overhead has yielded faster runtime calendar calculation (4-30%) and reduced heap size (30-500KB less) in the Calendar and TimeZone area. JDK 1.4 generates timezone database files for ~300 time zones. There are currently only an additional 130 time zones for which timezone database files need to be generated to deliver a complete set. (See attached e-mail for background.)

EVALUATION The count was wrong. It's ~390 unique time zones on Solaris 9. There's one minor compatibiliy problem (name conflict between JDK1.1.x and Olson). "MET" is Asia/Tehran in Java. This support increses the download size about 38% (in the time zone data part). The following are sizes in compressed tar format (using gnutar -z). Current subset: 80KB Full set: 104KB ###@###.### 2001-08-24 Need an exact list of non-Olson time zone names on Solaris9. ###@###.### 2001-08-29 Currently, there is no Solaris specific time zone name. ###@###.### 2001-09-03 The following new time zone IDs are added: Pacific/Midway Pacific/Johnston America/Juneau America/Nome America/Yakutat America/Dawson America/Whitehorse America/Boise America/Cambridge_Bay America/Chihuahua America/Hermosillo America/Inuvik America/Yellowknife America/Cancun America/Menominee America/Merida America/Monterrey America/Rainy_River America/Rankin_Inlet America/Swift_Current America/Detroit America/Eirunepe America/Indiana/Knox America/Indiana/Marengo America/Indiana/Vevay America/Iqaluit America/Kentucky/Monticello America/Louisville America/Nipigon America/Pangnirtung America/Boa_Vista America/Glace_Bay America/Goose_Bay America/Porto_Velho America/Araguaina America/Belem America/Catamarca America/Cordoba America/Jujuy America/Maceio America/Mendoza America/Recife America/Rosario Africa/Bamako Africa/El_Aaiun Atlantic/Madeira Europe/Belfast Africa/Brazzaville Africa/Ceuta CET Asia/Gaza Europe/Uzhgorod Europe/Zaporozhye Antarctica/Syowa Asia/Riyadh87 Asia/Riyadh88 Asia/Riyadh89 Antarctica/Vostok Asia/Omsk Antarctica/Davis Asia/Samarkand Asia/Hovd Asia/Pontianak Asia/Chungking Asia/Harbin Asia/Kashgar Asia/Kuching Asia/Urumqi Asia/Dili Australia/Lindeman Australia/Melbourne Pacific/Yap Pacific/Kwajalein The following time zone aliases are added: Pacific/Samoa US/Samoa America/Atka SystemV/HST10 US/Aleutian US/Hawaii SystemV/YST9 SystemV/YST9YDT US/Alaska America/Ensenada Canada/Pacific Canada/Yukon Mexico/BajaNorte PST8PDT SystemV/PST8 SystemV/PST8PDT US/Pacific US/Pacific-New America/Shiprock Canada/Mountain MST7MDT Mexico/BajaSur Navajo SystemV/MST7 SystemV/MST7MDT US/Arizona US/Mountain CST6CDT Canada/Central Canada/East-Saskatchewan Canada/Saskatchewan Chile/EasterIsland Mexico/General SystemV/CST6 SystemV/CST6CDT US/Central America/Fort_Wayne America/Indiana/Indianapolis America/Kentucky/Louisville America/Knox_IN America/Thunder_Bay Brazil/Acre Canada/Eastern Cuba EST5EDT Jamaica SystemV/EST5 SystemV/EST5EDT US/East-Indiana US/Eastern US/Indiana-Starke US/Michigan America/Virgin Brazil/West Canada/Atlantic Chile/Continental SystemV/AST4 SystemV/AST4ADT Canada/Newfoundland Brazil/East Brazil/DeNoronha Eire Etc/Universal Etc/Zulu GB GB-Eire Etc/Greenwich Etc/UCT Etc/UTC Greenwich Iceland Portugal UCT Universal Zulu Arctic/Longyearbyen Europe/Bratislava Europe/Ljubljana Europe/San_Marino Europe/Sarajevo Europe/Skopje Europe/Vatican Europe/Zagreb Poland Asia/Istanbul Asia/Tel_Aviv Egypt Europe/Nicosia Europe/Tiraspol Israel Libya Turkey W-SU Mideast/Riyadh87 Mideast/Riyadh88 Mideast/Riyadh89 Iran Australia/West Hongkong PRC Singapore Japan ROK Australia/North Australia/South Australia/Yancowinna Australia/ACT Australia/Canberra Australia/NSW Australia/Queensland Australia/Tasmania Australia/Victoria Australia/LHI Antarctica/South_Pole Kwajalein NZ NZ-CHAT The following is changed: MET (used to be an alias of Asia/Tehran for JDK1.1 compatibility. now follows the Olson's definition.) Note that an alias is the same thing as a time zone ID at the API level. Time zone display names are also added. Those have to be localized. ###@###.### 2001-09-12 GMT+0 and GMT-0 are not supported as aliases due to API spec conflict. ROC is not supported for PC. ###@###.### 2001-09-17