United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-4495052 : RFE: Java should support complete set of Olson time zones

Details
Type:
Enhancement
Submit Date:
2001-08-22
Status:
Resolved
Updated Date:
2001-09-25
Project Name:
JDK
Resolved Date:
2001-09-25
Component:
core-libs
OS:
solaris_9
Sub-Component:
java.util:i18n
CPU:
sparc
Priority:
P2
Resolution:
Fixed
Affected Versions:
solaris_9
Fixed Versions:
1.4.0 (beta3)

Related Reports
Relates:
Relates:
Relates:
Relates:
Relates:
Relates:
Relates:
Relates:

Sub Tasks

Description
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.)

                                    

Comments
CONVERTED DATA

BugTraq+ Release Management Values

COMMIT TO FIX:
merlin-beta3

FIXED IN:
merlin-beta3

INTEGRATED IN:
merlin-beta3


                                     
2004-06-14
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.)
                                     
2004-06-10
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
                                     
2001-09-12



Hardware and Software, Engineered to Work Together