ICU4J's TimeZone Ids Mapped To Windows Timezones
Ok, I've been working on trying to optimize some code recently. One of the huge bottlenecks in the application is the conversion of date/times to local user times. All date/times are stored in GMT in the database and are converted to user local when displayed.
We've been using a database table to do lookups/conversions of the date/times to make sure they display correctly depending on the user's region and whether or not they are in a daylight savings time. We're using custom data tables—which we have to maintain—not to mention it runs pretty slow on large recordsets.
In order to speed things up, I've been looking at using IBM's ICU4J's TimeZone class. Paul Hastings has written some nice little ColdFusion wrapper CFCs for this class. So far in my testing, under load the Java class performs about 10x more efficient that the db lookup code.
The problem I've run into is trying to figure out the mess that is the Olson Timezone DB (which is what is used in the Java classes) system of IDs. For each region there are a number of timezone (tz) ids that are valid—some have support Daylight Savings Time, some do not. There are over 550 tz ids, but only a fraction of them are actually unique.
I figured for a unique list of IDs, I might try seeing if I could map the Windows Timezone entries to the Olson DB format. Turns out, they already have a chart: zone_log.html

Comments
also a matter of principal, if you have historic datetime data then i think those historic tz should apply.
though you're right, it's a mess.
I figured I'd use the Windows TZ options as options on our site as it seems like a pretty decent list that should cover all the major areas (plus, all of current users are Windows-based and the majority of them always will be.)
Using the Windows TZ just seems like the simplest solution. If I ever need it to be more complicated, I can expand the options.