001 /*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024 package microsoft.exchange.webservices.data.util;
025
026 import java.util.HashMap;
027 import java.util.Map;
028 import java.util.TimeZone;
029
030 /**
031 * Miscellany timezone functions
032 */
033 public final class TimeZoneUtils {
034
035 // A map of olson name > Microsoft Name.
036 private static final Map<String, String> olsonTimeZoneToMs = createOlsonTimeZoneToMsMap();
037
038
039 private TimeZoneUtils() {
040 throw new UnsupportedOperationException();
041 }
042
043
044 /**
045 * Convert Olson TimeZone to Microsoft TimeZone Generated using Unicode CLDR project Example:
046 * https://gist.github.com/scottmac/655675e9b4d4913c539c
047 *
048 * @param timeZone java timezone (Olson)
049 * @return a microsoft timezone identifier (ala Eastern Standard Time)
050 */
051 public static String getMicrosoftTimeZoneName(final TimeZone timeZone) {
052 if (timeZone == null) {
053 throw new IllegalArgumentException("Parameter \"timeZone\" must be defined");
054 }
055
056 final String id = timeZone.getID();
057 return olsonTimeZoneToMs.get(id);
058 }
059
060
061 public static Map<String, String> createOlsonTimeZoneToMsMap() {
062 final Map<String, String> map = new HashMap<String, String>();
063 map.put("Africa/Abidjan", "Greenwich Standard Time");
064 map.put("Africa/Accra", "Greenwich Standard Time");
065 map.put("Africa/Addis_Ababa", "E. Africa Standard Time");
066 map.put("Africa/Algiers", "W. Central Africa Standard Time");
067 map.put("Africa/Asmara", "E. Africa Standard Time");
068 map.put("Africa/Asmera", "E. Africa Standard Time");
069 map.put("Africa/Bamako", "Greenwich Standard Time");
070 map.put("Africa/Bangui", "W. Central Africa Standard Time");
071 map.put("Africa/Banjul", "Greenwich Standard Time");
072 map.put("Africa/Bissau", "Greenwich Standard Time");
073 map.put("Africa/Blantyre", "South Africa Standard Time");
074 map.put("Africa/Brazzaville", "W. Central Africa Standard Time");
075 map.put("Africa/Bujumbura", "South Africa Standard Time");
076 map.put("Africa/Cairo", "Egypt Standard Time");
077 map.put("Africa/Casablanca", "Morocco Standard Time");
078 map.put("Africa/Ceuta", "Romance Standard Time");
079 map.put("Africa/Conakry", "Greenwich Standard Time");
080 map.put("Africa/Dakar", "Greenwich Standard Time");
081 map.put("Africa/Dar_es_Salaam", "E. Africa Standard Time");
082 map.put("Africa/Djibouti", "E. Africa Standard Time");
083 map.put("Africa/Douala", "W. Central Africa Standard Time");
084 map.put("Africa/El_Aaiun", "Morocco Standard Time");
085 map.put("Africa/Freetown", "Greenwich Standard Time");
086 map.put("Africa/Gaborone", "South Africa Standard Time");
087 map.put("Africa/Harare", "South Africa Standard Time");
088 map.put("Africa/Johannesburg", "South Africa Standard Time");
089 map.put("Africa/Juba", "E. Africa Standard Time");
090 map.put("Africa/Kampala", "E. Africa Standard Time");
091 map.put("Africa/Khartoum", "E. Africa Standard Time");
092 map.put("Africa/Kigali", "South Africa Standard Time");
093 map.put("Africa/Kinshasa", "W. Central Africa Standard Time");
094 map.put("Africa/Lagos", "W. Central Africa Standard Time");
095 map.put("Africa/Libreville", "W. Central Africa Standard Time");
096 map.put("Africa/Lome", "Greenwich Standard Time");
097 map.put("Africa/Luanda", "W. Central Africa Standard Time");
098 map.put("Africa/Lubumbashi", "South Africa Standard Time");
099 map.put("Africa/Lusaka", "South Africa Standard Time");
100 map.put("Africa/Malabo", "W. Central Africa Standard Time");
101 map.put("Africa/Maputo", "South Africa Standard Time");
102 map.put("Africa/Maseru", "South Africa Standard Time");
103 map.put("Africa/Mbabane", "South Africa Standard Time");
104 map.put("Africa/Mogadishu", "E. Africa Standard Time");
105 map.put("Africa/Monrovia", "Greenwich Standard Time");
106 map.put("Africa/Nairobi", "E. Africa Standard Time");
107 map.put("Africa/Ndjamena", "W. Central Africa Standard Time");
108 map.put("Africa/Niamey", "W. Central Africa Standard Time");
109 map.put("Africa/Nouakchott", "Greenwich Standard Time");
110 map.put("Africa/Ouagadougou", "Greenwich Standard Time");
111 map.put("Africa/Porto-Novo", "W. Central Africa Standard Time");
112 map.put("Africa/Sao_Tome", "Greenwich Standard Time");
113 map.put("Africa/Timbuktu", "Greenwich Standard Time");
114 map.put("Africa/Tripoli", "Libya Standard Time");
115 map.put("Africa/Tunis", "W. Central Africa Standard Time");
116 map.put("Africa/Windhoek", "Namibia Standard Time");
117 map.put("America/Anchorage", "Alaskan Standard Time");
118 map.put("America/Anguilla", "SA Western Standard Time");
119 map.put("America/Antigua", "SA Western Standard Time");
120 map.put("America/Araguaina", "SA Eastern Standard Time");
121 map.put("America/Argentina/Buenos_Aires", "Argentina Standard Time");
122 map.put("America/Argentina/Catamarca", "Argentina Standard Time");
123 map.put("America/Argentina/ComodRivadavia", "Argentina Standard Time");
124 map.put("America/Argentina/Cordoba", "Argentina Standard Time");
125 map.put("America/Argentina/Jujuy", "Argentina Standard Time");
126 map.put("America/Argentina/La_Rioja", "Argentina Standard Time");
127 map.put("America/Argentina/Mendoza", "Argentina Standard Time");
128 map.put("America/Argentina/Rio_Gallegos", "Argentina Standard Time");
129 map.put("America/Argentina/Salta", "Argentina Standard Time");
130 map.put("America/Argentina/San_Juan", "Argentina Standard Time");
131 map.put("America/Argentina/San_Luis", "Argentina Standard Time");
132 map.put("America/Argentina/Tucuman", "Argentina Standard Time");
133 map.put("America/Argentina/Ushuaia", "Argentina Standard Time");
134 map.put("America/Aruba", "SA Western Standard Time");
135 map.put("America/Asuncion", "Paraguay Standard Time");
136 map.put("America/Atikokan", "SA Pacific Standard Time");
137 map.put("America/Bahia", "Bahia Standard Time");
138 map.put("America/Bahia_Banderas", "Central Standard Time (Mexico)");
139 map.put("America/Barbados", "SA Western Standard Time");
140 map.put("America/Belem", "SA Eastern Standard Time");
141 map.put("America/Belize", "Central America Standard Time");
142 map.put("America/Blanc-Sablon", "SA Western Standard Time");
143 map.put("America/Boa_Vista", "SA Western Standard Time");
144 map.put("America/Bogota", "SA Pacific Standard Time");
145 map.put("America/Boise", "Mountain Standard Time");
146 map.put("America/Buenos_Aires", "Argentina Standard Time");
147 map.put("America/Cambridge_Bay", "Mountain Standard Time");
148 map.put("America/Campo_Grande", "Central Brazilian Standard Time");
149 map.put("America/Cancun", "Eastern Standard Time (Mexico)");
150 map.put("America/Caracas", "Venezuela Standard Time");
151 map.put("America/Catamarca", "Argentina Standard Time");
152 map.put("America/Cayenne", "SA Eastern Standard Time");
153 map.put("America/Cayman", "SA Pacific Standard Time");
154 map.put("America/Chicago", "Central Standard Time");
155 map.put("America/Chihuahua", "Mountain Standard Time (Mexico)");
156 map.put("America/Coral_Harbour", "SA Pacific Standard Time");
157 map.put("America/Cordoba", "Argentina Standard Time");
158 map.put("America/Costa_Rica", "Central America Standard Time");
159 map.put("America/Creston", "US Mountain Standard Time");
160 map.put("America/Cuiaba", "Central Brazilian Standard Time");
161 map.put("America/Curacao", "SA Western Standard Time");
162 map.put("America/Danmarkshavn", "UTC");
163 map.put("America/Dawson", "Pacific Standard Time");
164 map.put("America/Dawson_Creek", "US Mountain Standard Time");
165 map.put("America/Denver", "Mountain Standard Time");
166 map.put("America/Detroit", "Eastern Standard Time");
167 map.put("America/Dominica", "SA Western Standard Time");
168 map.put("America/Edmonton", "Mountain Standard Time");
169 map.put("America/Eirunepe", "SA Pacific Standard Time");
170 map.put("America/El_Salvador", "Central America Standard Time");
171 map.put("America/Ensenada", "Pacific Standard Time");
172 map.put("America/Fort_Wayne", "US Eastern Standard Time");
173 map.put("America/Fortaleza", "SA Eastern Standard Time");
174 map.put("America/Glace_Bay", "Atlantic Standard Time");
175 map.put("America/Godthab", "Greenland Standard Time");
176 map.put("America/Goose_Bay", "Atlantic Standard Time");
177 map.put("America/Grand_Turk", "SA Western Standard Time");
178 map.put("America/Grenada", "SA Western Standard Time");
179 map.put("America/Guadeloupe", "SA Western Standard Time");
180 map.put("America/Guatemala", "Central America Standard Time");
181 map.put("America/Guayaquil", "SA Pacific Standard Time");
182 map.put("America/Guyana", "SA Western Standard Time");
183 map.put("America/Halifax", "Atlantic Standard Time");
184 map.put("America/Havana", "Eastern Standard Time");
185 map.put("America/Hermosillo", "US Mountain Standard Time");
186 map.put("America/Indiana/Indianapolis", "US Eastern Standard Time");
187 map.put("America/Indiana/Knox", "Central Standard Time");
188 map.put("America/Indiana/Marengo", "US Eastern Standard Time");
189 map.put("America/Indiana/Petersburg", "Eastern Standard Time");
190 map.put("America/Indiana/Tell_City", "Central Standard Time");
191 map.put("America/Indiana/Vevay", "US Eastern Standard Time");
192 map.put("America/Indiana/Vincennes", "Eastern Standard Time");
193 map.put("America/Indiana/Winamac", "Eastern Standard Time");
194 map.put("America/Indianapolis", "US Eastern Standard Time");
195 map.put("America/Inuvik", "Mountain Standard Time");
196 map.put("America/Iqaluit", "Eastern Standard Time");
197 map.put("America/Jamaica", "SA Pacific Standard Time");
198 map.put("America/Jujuy", "Argentina Standard Time");
199 map.put("America/Juneau", "Alaskan Standard Time");
200 map.put("America/Kentucky/Louisville", "Eastern Standard Time");
201 map.put("America/Kentucky/Monticello", "Eastern Standard Time");
202 map.put("America/Knox_IN", "Central Standard Time");
203 map.put("America/Kralendijk", "SA Western Standard Time");
204 map.put("America/La_Paz", "SA Western Standard Time");
205 map.put("America/Lima", "SA Pacific Standard Time");
206 map.put("America/Los_Angeles", "Pacific Standard Time");
207 map.put("America/Louisville", "Eastern Standard Time");
208 map.put("America/Lower_Princes", "SA Western Standard Time");
209 map.put("America/Maceio", "SA Eastern Standard Time");
210 map.put("America/Managua", "Central America Standard Time");
211 map.put("America/Manaus", "SA Western Standard Time");
212 map.put("America/Marigot", "SA Western Standard Time");
213 map.put("America/Martinique", "SA Western Standard Time");
214 map.put("America/Matamoros", "Central Standard Time");
215 map.put("America/Mazatlan", "Mountain Standard Time (Mexico)");
216 map.put("America/Mendoza", "Argentina Standard Time");
217 map.put("America/Menominee", "Central Standard Time");
218 map.put("America/Merida", "Central Standard Time (Mexico)");
219 map.put("America/Mexico_City", "Central Standard Time (Mexico)");
220 map.put("America/Moncton", "Atlantic Standard Time");
221 map.put("America/Monterrey", "Central Standard Time (Mexico)");
222 map.put("America/Montevideo", "Montevideo Standard Time");
223 map.put("America/Montreal", "Eastern Standard Time");
224 map.put("America/Montserrat", "SA Western Standard Time");
225 map.put("America/Nassau", "Eastern Standard Time");
226 map.put("America/New_York", "Eastern Standard Time");
227 map.put("America/Nipigon", "Eastern Standard Time");
228 map.put("America/Nome", "Alaskan Standard Time");
229 map.put("America/Noronha", "UTC-02");
230 map.put("America/North_Dakota/Beulah", "Central Standard Time");
231 map.put("America/North_Dakota/Center", "Central Standard Time");
232 map.put("America/North_Dakota/New_Salem", "Central Standard Time");
233 map.put("America/Ojinaga", "Mountain Standard Time");
234 map.put("America/Panama", "SA Pacific Standard Time");
235 map.put("America/Pangnirtung", "Eastern Standard Time");
236 map.put("America/Paramaribo", "SA Eastern Standard Time");
237 map.put("America/Phoenix", "US Mountain Standard Time");
238 map.put("America/Port-au-Prince", "Eastern Standard Time");
239 map.put("America/Port_of_Spain", "SA Western Standard Time");
240 map.put("America/Porto_Acre", "SA Pacific Standard Time");
241 map.put("America/Porto_Velho", "SA Western Standard Time");
242 map.put("America/Puerto_Rico", "SA Western Standard Time");
243 map.put("America/Rainy_River", "Central Standard Time");
244 map.put("America/Rankin_Inlet", "Central Standard Time");
245 map.put("America/Recife", "SA Eastern Standard Time");
246 map.put("America/Regina", "Canada Central Standard Time");
247 map.put("America/Resolute", "Central Standard Time");
248 map.put("America/Rio_Branco", "SA Pacific Standard Time");
249 map.put("America/Rosario", "Argentina Standard Time");
250 map.put("America/Santa_Isabel", "Pacific Standard Time (Mexico)");
251 map.put("America/Santarem", "SA Eastern Standard Time");
252 map.put("America/Santiago", "Pacific SA Standard Time");
253 map.put("America/Santo_Domingo", "SA Western Standard Time");
254 map.put("America/Sao_Paulo", "E. South America Standard Time");
255 map.put("America/Scoresbysund", "Azores Standard Time");
256 map.put("America/Shiprock", "Mountain Standard Time");
257 map.put("America/Sitka", "Alaskan Standard Time");
258 map.put("America/St_Barthelemy", "SA Western Standard Time");
259 map.put("America/St_Johns", "Newfoundland Standard Time");
260 map.put("America/St_Kitts", "SA Western Standard Time");
261 map.put("America/St_Lucia", "SA Western Standard Time");
262 map.put("America/St_Thomas", "SA Western Standard Time");
263 map.put("America/St_Vincent", "SA Western Standard Time");
264 map.put("America/Swift_Current", "Canada Central Standard Time");
265 map.put("America/Tegucigalpa", "Central America Standard Time");
266 map.put("America/Thule", "Atlantic Standard Time");
267 map.put("America/Thunder_Bay", "Eastern Standard Time");
268 map.put("America/Tijuana", "Pacific Standard Time");
269 map.put("America/Toronto", "Eastern Standard Time");
270 map.put("America/Tortola", "SA Western Standard Time");
271 map.put("America/Vancouver", "Pacific Standard Time");
272 map.put("America/Virgin", "SA Western Standard Time");
273 map.put("America/Whitehorse", "Pacific Standard Time");
274 map.put("America/Winnipeg", "Central Standard Time");
275 map.put("America/Yakutat", "Alaskan Standard Time");
276 map.put("America/Yellowknife", "Mountain Standard Time");
277 map.put("Antarctica/Casey", "W. Australia Standard Time");
278 map.put("Antarctica/Davis", "SE Asia Standard Time");
279 map.put("Antarctica/DumontDUrville", "West Pacific Standard Time");
280 map.put("Antarctica/Macquarie", "Central Pacific Standard Time");
281 map.put("Antarctica/Mawson", "West Asia Standard Time");
282 map.put("Antarctica/McMurdo", "New Zealand Standard Time");
283 map.put("Antarctica/Palmer", "Pacific SA Standard Time");
284 map.put("Antarctica/Rothera", "SA Eastern Standard Time");
285 map.put("Antarctica/South_Pole", "New Zealand Standard Time");
286 map.put("Antarctica/Syowa", "E. Africa Standard Time");
287 map.put("Antarctica/Vostok", "Central Asia Standard Time");
288 map.put("Arctic/Longyearbyen", "W. Europe Standard Time");
289 map.put("Asia/Aden", "Arab Standard Time");
290 map.put("Asia/Almaty", "Central Asia Standard Time");
291 map.put("Asia/Amman", "Jordan Standard Time");
292 map.put("Asia/Anadyr", "Russia Time Zone 11");
293 map.put("Asia/Aqtau", "West Asia Standard Time");
294 map.put("Asia/Aqtobe", "West Asia Standard Time");
295 map.put("Asia/Ashgabat", "West Asia Standard Time");
296 map.put("Asia/Ashkhabad", "West Asia Standard Time");
297 map.put("Asia/Baghdad", "Arabic Standard Time");
298 map.put("Asia/Bahrain", "Arab Standard Time");
299 map.put("Asia/Baku", "Azerbaijan Standard Time");
300 map.put("Asia/Bangkok", "SE Asia Standard Time");
301 map.put("Asia/Beirut", "Middle East Standard Time");
302 map.put("Asia/Bishkek", "Central Asia Standard Time");
303 map.put("Asia/Brunei", "Singapore Standard Time");
304 map.put("Asia/Calcutta", "India Standard Time");
305 map.put("Asia/Chita", "North Asia East Standard Time");
306 map.put("Asia/Choibalsan", "Ulaanbaatar Standard Time");
307 map.put("Asia/Chongqing", "China Standard Time");
308 map.put("Asia/Chungking", "China Standard Time");
309 map.put("Asia/Colombo", "Sri Lanka Standard Time");
310 map.put("Asia/Dacca", "Bangladesh Standard Time");
311 map.put("Asia/Damascus", "Syria Standard Time");
312 map.put("Asia/Dhaka", "Bangladesh Standard Time");
313 map.put("Asia/Dili", "Tokyo Standard Time");
314 map.put("Asia/Dubai", "Arabian Standard Time");
315 map.put("Asia/Dushanbe", "West Asia Standard Time");
316 map.put("Asia/Harbin", "China Standard Time");
317 map.put("Asia/Ho_Chi_Minh", "SE Asia Standard Time");
318 map.put("Asia/Hong_Kong", "China Standard Time");
319 map.put("Asia/Hovd", "SE Asia Standard Time");
320 map.put("Asia/Irkutsk", "North Asia East Standard Time");
321 map.put("Asia/Istanbul", "Turkey Standard Time");
322 map.put("Asia/Jakarta", "SE Asia Standard Time");
323 map.put("Asia/Jayapura", "Tokyo Standard Time");
324 map.put("Asia/Jerusalem", "Israel Standard Time");
325 map.put("Asia/Kabul", "Afghanistan Standard Time");
326 map.put("Asia/Kamchatka", "Russia Time Zone 11");
327 map.put("Asia/Karachi", "Pakistan Standard Time");
328 map.put("Asia/Kashgar", "Central Asia Standard Time");
329 map.put("Asia/Kathmandu", "Nepal Standard Time");
330 map.put("Asia/Katmandu", "Nepal Standard Time");
331 map.put("Asia/Khandyga", "Yakutsk Standard Time");
332 map.put("Asia/Kolkata", "India Standard Time");
333 map.put("Asia/Krasnoyarsk", "North Asia Standard Time");
334 map.put("Asia/Kuala_Lumpur", "Singapore Standard Time");
335 map.put("Asia/Kuching", "Singapore Standard Time");
336 map.put("Asia/Kuwait", "Arab Standard Time");
337 map.put("Asia/Macao", "China Standard Time");
338 map.put("Asia/Macau", "China Standard Time");
339 map.put("Asia/Magadan", "Magadan Standard Time");
340 map.put("Asia/Makassar", "Singapore Standard Time");
341 map.put("Asia/Manila", "Singapore Standard Time");
342 map.put("Asia/Muscat", "Arabian Standard Time");
343 map.put("Asia/Nicosia", "GTB Standard Time");
344 map.put("Asia/Novokuznetsk", "North Asia Standard Time");
345 map.put("Asia/Novosibirsk", "N. Central Asia Standard Time");
346 map.put("Asia/Omsk", "N. Central Asia Standard Time");
347 map.put("Asia/Oral", "West Asia Standard Time");
348 map.put("Asia/Phnom_Penh", "SE Asia Standard Time");
349 map.put("Asia/Pontianak", "SE Asia Standard Time");
350 map.put("Asia/Pyongyang", "Korea Standard Time");
351 map.put("Asia/Qatar", "Arab Standard Time");
352 map.put("Asia/Qyzylorda", "Central Asia Standard Time");
353 map.put("Asia/Rangoon", "Myanmar Standard Time");
354 map.put("Asia/Riyadh", "Arab Standard Time");
355 map.put("Asia/Saigon", "SE Asia Standard Time");
356 map.put("Asia/Sakhalin", "Vladivostok Standard Time");
357 map.put("Asia/Samarkand", "West Asia Standard Time");
358 map.put("Asia/Seoul", "Korea Standard Time");
359 map.put("Asia/Shanghai", "China Standard Time");
360 map.put("Asia/Singapore", "Singapore Standard Time");
361 map.put("Asia/Srednekolymsk", "Russia Time Zone 10");
362 map.put("Asia/Taipei", "Taipei Standard Time");
363 map.put("Asia/Tashkent", "West Asia Standard Time");
364 map.put("Asia/Tbilisi", "Georgian Standard Time");
365 map.put("Asia/Tehran", "Iran Standard Time");
366 map.put("Asia/Tel_Aviv", "Israel Standard Time");
367 map.put("Asia/Thimbu", "Bangladesh Standard Time");
368 map.put("Asia/Thimphu", "Bangladesh Standard Time");
369 map.put("Asia/Tokyo", "Tokyo Standard Time");
370 map.put("Asia/Ujung_Pandang", "Singapore Standard Time");
371 map.put("Asia/Ulaanbaatar", "Ulaanbaatar Standard Time");
372 map.put("Asia/Ulan_Bator", "Ulaanbaatar Standard Time");
373 map.put("Asia/Urumqi", "Central Asia Standard Time");
374 map.put("Asia/Ust-Nera", "Vladivostok Standard Time");
375 map.put("Asia/Vientiane", "SE Asia Standard Time");
376 map.put("Asia/Vladivostok", "Vladivostok Standard Time");
377 map.put("Asia/Yakutsk", "Yakutsk Standard Time");
378 map.put("Asia/Yekaterinburg", "Ekaterinburg Standard Time");
379 map.put("Asia/Yerevan", "Caucasus Standard Time");
380 map.put("Atlantic/Azores", "Azores Standard Time");
381 map.put("Atlantic/Bermuda", "Atlantic Standard Time");
382 map.put("Atlantic/Canary", "GMT Standard Time");
383 map.put("Atlantic/Cape_Verde", "Cape Verde Standard Time");
384 map.put("Atlantic/Faeroe", "GMT Standard Time");
385 map.put("Atlantic/Faroe", "GMT Standard Time");
386 map.put("Atlantic/Jan_Mayen", "W. Europe Standard Time");
387 map.put("Atlantic/Madeira", "GMT Standard Time");
388 map.put("Atlantic/Reykjavik", "Greenwich Standard Time");
389 map.put("Atlantic/South_Georgia", "UTC-02");
390 map.put("Atlantic/St_Helena", "Greenwich Standard Time");
391 map.put("Atlantic/Stanley", "SA Eastern Standard Time");
392 map.put("Australia/ACT", "AUS Eastern Standard Time");
393 map.put("Australia/Adelaide", "Cen. Australia Standard Time");
394 map.put("Australia/Brisbane", "E. Australia Standard Time");
395 map.put("Australia/Broken_Hill", "Cen. Australia Standard Time");
396 map.put("Australia/Canberra", "AUS Eastern Standard Time");
397 map.put("Australia/Currie", "Tasmania Standard Time");
398 map.put("Australia/Darwin", "AUS Central Standard Time");
399 map.put("Australia/Hobart", "Tasmania Standard Time");
400 map.put("Australia/Lindeman", "E. Australia Standard Time");
401 map.put("Australia/Melbourne", "AUS Eastern Standard Time");
402 map.put("Australia/NSW", "AUS Eastern Standard Time");
403 map.put("Australia/North", "AUS Central Standard Time");
404 map.put("Australia/Perth", "W. Australia Standard Time");
405 map.put("Australia/Queensland", "E. Australia Standard Time");
406 map.put("Australia/South", "Cen. Australia Standard Time");
407 map.put("Australia/Sydney", "AUS Eastern Standard Time");
408 map.put("Australia/Tasmania", "Tasmania Standard Time");
409 map.put("Australia/Victoria", "AUS Eastern Standard Time");
410 map.put("Australia/West", "W. Australia Standard Time");
411 map.put("Australia/Yancowinna", "Cen. Australia Standard Time");
412 map.put("Brazil/Acre", "SA Pacific Standard Time");
413 map.put("Brazil/DeNoronha", "UTC-02");
414 map.put("Brazil/East", "E. South America Standard Time");
415 map.put("Brazil/West", "SA Western Standard Time");
416 map.put("CST6CDT", "Central Standard Time");
417 map.put("Canada/Atlantic", "Atlantic Standard Time");
418 map.put("Canada/Central", "Central Standard Time");
419 map.put("Canada/East-Saskatchewan", "Canada Central Standard Time");
420 map.put("Canada/Eastern", "Eastern Standard Time");
421 map.put("Canada/Mountain", "Mountain Standard Time");
422 map.put("Canada/Newfoundland", "Newfoundland Standard Time");
423 map.put("Canada/Pacific", "Pacific Standard Time");
424 map.put("Canada/Saskatchewan", "Canada Central Standard Time");
425 map.put("Canada/Yukon", "Pacific Standard Time");
426 map.put("Chile/Continental", "Pacific SA Standard Time");
427 map.put("Cuba", "Eastern Standard Time");
428 map.put("EST", "SA Pacific Standard Time");
429 map.put("EST5EDT", "Eastern Standard Time");
430 map.put("Egypt", "Egypt Standard Time");
431 map.put("Eire", "GMT Standard Time");
432 map.put("Etc/GMT", "UTC");
433 map.put("Etc/GMT+0", "UTC");
434 map.put("Etc/GMT+1", "Cape Verde Standard Time");
435 map.put("Etc/GMT+10", "Hawaiian Standard Time");
436 map.put("Etc/GMT+11", "UTC-11");
437 map.put("Etc/GMT+12", "Dateline Standard Time");
438 map.put("Etc/GMT+2", "UTC-02");
439 map.put("Etc/GMT+3", "SA Eastern Standard Time");
440 map.put("Etc/GMT+4", "SA Western Standard Time");
441 map.put("Etc/GMT+5", "SA Pacific Standard Time");
442 map.put("Etc/GMT+6", "Central America Standard Time");
443 map.put("Etc/GMT+7", "US Mountain Standard Time");
444 map.put("Etc/GMT-0", "UTC");
445 map.put("Etc/GMT-1", "W. Central Africa Standard Time");
446 map.put("Etc/GMT-10", "West Pacific Standard Time");
447 map.put("Etc/GMT-11", "Central Pacific Standard Time");
448 map.put("Etc/GMT-12", "UTC+12");
449 map.put("Etc/GMT-13", "Tonga Standard Time");
450 map.put("Etc/GMT-14", "Line Islands Standard Time");
451 map.put("Etc/GMT-2", "South Africa Standard Time");
452 map.put("Etc/GMT-3", "E. Africa Standard Time");
453 map.put("Etc/GMT-4", "Arabian Standard Time");
454 map.put("Etc/GMT-5", "West Asia Standard Time");
455 map.put("Etc/GMT-6", "Central Asia Standard Time");
456 map.put("Etc/GMT-7", "SE Asia Standard Time");
457 map.put("Etc/GMT-8", "Singapore Standard Time");
458 map.put("Etc/GMT-9", "Tokyo Standard Time");
459 map.put("Etc/GMT0", "UTC");
460 map.put("Etc/Greenwich", "UTC");
461 map.put("Etc/UCT", "UTC");
462 map.put("Etc/UTC", "UTC");
463 map.put("Etc/Universal", "UTC");
464 map.put("Etc/Zulu", "UTC");
465 map.put("Europe/Amsterdam", "W. Europe Standard Time");
466 map.put("Europe/Andorra", "W. Europe Standard Time");
467 map.put("Europe/Athens", "GTB Standard Time");
468 map.put("Europe/Belfast", "GMT Standard Time");
469 map.put("Europe/Belgrade", "Central Europe Standard Time");
470 map.put("Europe/Berlin", "W. Europe Standard Time");
471 map.put("Europe/Bratislava", "Central Europe Standard Time");
472 map.put("Europe/Brussels", "Romance Standard Time");
473 map.put("Europe/Bucharest", "GTB Standard Time");
474 map.put("Europe/Budapest", "Central Europe Standard Time");
475 map.put("Europe/Busingen", "W. Europe Standard Time");
476 map.put("Europe/Chisinau", "GTB Standard Time");
477 map.put("Europe/Copenhagen", "Romance Standard Time");
478 map.put("Europe/Dublin", "GMT Standard Time");
479 map.put("Europe/Gibraltar", "W. Europe Standard Time");
480 map.put("Europe/Guernsey", "GMT Standard Time");
481 map.put("Europe/Helsinki", "FLE Standard Time");
482 map.put("Europe/Isle_of_Man", "GMT Standard Time");
483 map.put("Europe/Istanbul", "Turkey Standard Time");
484 map.put("Europe/Jersey", "GMT Standard Time");
485 map.put("Europe/Kaliningrad", "Kaliningrad Standard Time");
486 map.put("Europe/Kiev", "FLE Standard Time");
487 map.put("Europe/Lisbon", "GMT Standard Time");
488 map.put("Europe/Ljubljana", "Central Europe Standard Time");
489 map.put("Europe/London", "GMT Standard Time");
490 map.put("Europe/Luxembourg", "W. Europe Standard Time");
491 map.put("Europe/Madrid", "Romance Standard Time");
492 map.put("Europe/Malta", "W. Europe Standard Time");
493 map.put("Europe/Mariehamn", "FLE Standard Time");
494 map.put("Europe/Minsk", "Belarus Standard Time");
495 map.put("Europe/Monaco", "W. Europe Standard Time");
496 map.put("Europe/Moscow", "Russian Standard Time");
497 map.put("Europe/Nicosia", "GTB Standard Time");
498 map.put("Europe/Oslo", "W. Europe Standard Time");
499 map.put("Europe/Paris", "Romance Standard Time");
500 map.put("Europe/Podgorica", "Central Europe Standard Time");
501 map.put("Europe/Prague", "Central Europe Standard Time");
502 map.put("Europe/Riga", "FLE Standard Time");
503 map.put("Europe/Rome", "W. Europe Standard Time");
504 map.put("Europe/Samara", "Russia Time Zone 3");
505 map.put("Europe/San_Marino", "W. Europe Standard Time");
506 map.put("Europe/Sarajevo", "Central European Standard Time");
507 map.put("Europe/Simferopol", "Russian Standard Time");
508 map.put("Europe/Skopje", "Central European Standard Time");
509 map.put("Europe/Sofia", "FLE Standard Time");
510 map.put("Europe/Stockholm", "W. Europe Standard Time");
511 map.put("Europe/Tallinn", "FLE Standard Time");
512 map.put("Europe/Tirane", "Central Europe Standard Time");
513 map.put("Europe/Tiraspol", "GTB Standard Time");
514 map.put("Europe/Uzhgorod", "FLE Standard Time");
515 map.put("Europe/Vaduz", "W. Europe Standard Time");
516 map.put("Europe/Vatican", "W. Europe Standard Time");
517 map.put("Europe/Vienna", "W. Europe Standard Time");
518 map.put("Europe/Vilnius", "FLE Standard Time");
519 map.put("Europe/Volgograd", "Russian Standard Time");
520 map.put("Europe/Warsaw", "Central European Standard Time");
521 map.put("Europe/Zagreb", "Central European Standard Time");
522 map.put("Europe/Zaporozhye", "FLE Standard Time");
523 map.put("Europe/Zurich", "W. Europe Standard Time");
524 map.put("GB", "GMT Standard Time");
525 map.put("GB-Eire", "GMT Standard Time");
526 map.put("GMT", "UTC");
527 map.put("GMT+0", "UTC");
528 map.put("GMT-0", "UTC");
529 map.put("GMT0", "UTC");
530 map.put("Greenwich", "UTC");
531 map.put("HST", "Hawaiian Standard Time");
532 map.put("Hongkong", "China Standard Time");
533 map.put("Iceland", "Greenwich Standard Time");
534 map.put("Indian/Antananarivo", "E. Africa Standard Time");
535 map.put("Indian/Chagos", "Central Asia Standard Time");
536 map.put("Indian/Christmas", "SE Asia Standard Time");
537 map.put("Indian/Cocos", "Myanmar Standard Time");
538 map.put("Indian/Comoro", "E. Africa Standard Time");
539 map.put("Indian/Kerguelen", "West Asia Standard Time");
540 map.put("Indian/Mahe", "Mauritius Standard Time");
541 map.put("Indian/Maldives", "West Asia Standard Time");
542 map.put("Indian/Mauritius", "Mauritius Standard Time");
543 map.put("Indian/Mayotte", "E. Africa Standard Time");
544 map.put("Indian/Reunion", "Mauritius Standard Time");
545 map.put("Iran", "Iran Standard Time");
546 map.put("Israel", "Israel Standard Time");
547 map.put("Jamaica", "SA Pacific Standard Time");
548 map.put("Japan", "Tokyo Standard Time");
549 map.put("Kwajalein", "UTC+12");
550 map.put("Libya", "Libya Standard Time");
551 map.put("MST", "US Mountain Standard Time");
552 map.put("MST7MDT", "Mountain Standard Time");
553 map.put("Mexico/BajaNorte", "Pacific Standard Time");
554 map.put("Mexico/BajaSur", "Mountain Standard Time (Mexico)");
555 map.put("Mexico/General", "Central Standard Time (Mexico)");
556 map.put("NZ", "New Zealand Standard Time");
557 map.put("Navajo", "Mountain Standard Time");
558 map.put("PRC", "China Standard Time");
559 map.put("PST8PDT", "Pacific Standard Time");
560 map.put("Pacific/Apia", "Samoa Standard Time");
561 map.put("Pacific/Auckland", "New Zealand Standard Time");
562 map.put("Pacific/Bougainville", "Central Pacific Standard Time");
563 map.put("Pacific/Chuuk", "West Pacific Standard Time");
564 map.put("Pacific/Efate", "Central Pacific Standard Time");
565 map.put("Pacific/Enderbury", "Tonga Standard Time");
566 map.put("Pacific/Fakaofo", "Tonga Standard Time");
567 map.put("Pacific/Fiji", "Fiji Standard Time");
568 map.put("Pacific/Funafuti", "UTC+12");
569 map.put("Pacific/Galapagos", "Central America Standard Time");
570 map.put("Pacific/Guadalcanal", "Central Pacific Standard Time");
571 map.put("Pacific/Guam", "West Pacific Standard Time");
572 map.put("Pacific/Honolulu", "Hawaiian Standard Time");
573 map.put("Pacific/Johnston", "Hawaiian Standard Time");
574 map.put("Pacific/Kiritimati", "Line Islands Standard Time");
575 map.put("Pacific/Kosrae", "Central Pacific Standard Time");
576 map.put("Pacific/Kwajalein", "UTC+12");
577 map.put("Pacific/Majuro", "UTC+12");
578 map.put("Pacific/Midway", "UTC-11");
579 map.put("Pacific/Nauru", "UTC+12");
580 map.put("Pacific/Niue", "UTC-11");
581 map.put("Pacific/Noumea", "Central Pacific Standard Time");
582 map.put("Pacific/Pago_Pago", "UTC-11");
583 map.put("Pacific/Palau", "Tokyo Standard Time");
584 map.put("Pacific/Pohnpei", "Central Pacific Standard Time");
585 map.put("Pacific/Ponape", "Central Pacific Standard Time");
586 map.put("Pacific/Port_Moresby", "West Pacific Standard Time");
587 map.put("Pacific/Rarotonga", "Hawaiian Standard Time");
588 map.put("Pacific/Saipan", "West Pacific Standard Time");
589 map.put("Pacific/Samoa", "UTC-11");
590 map.put("Pacific/Tahiti", "Hawaiian Standard Time");
591 map.put("Pacific/Tarawa", "UTC+12");
592 map.put("Pacific/Tongatapu", "Tonga Standard Time");
593 map.put("Pacific/Truk", "West Pacific Standard Time");
594 map.put("Pacific/Wake", "UTC+12");
595 map.put("Pacific/Wallis", "UTC+12");
596 map.put("Pacific/Yap", "West Pacific Standard Time");
597 map.put("Poland", "Central European Standard Time");
598 map.put("Portugal", "GMT Standard Time");
599 map.put("ROC", "Taipei Standard Time");
600 map.put("ROK", "Korea Standard Time");
601 map.put("Singapore", "Singapore Standard Time");
602 map.put("Turkey", "Turkey Standard Time");
603 map.put("UCT", "UTC");
604 map.put("US/Alaska", "Alaskan Standard Time");
605 map.put("US/Arizona", "US Mountain Standard Time");
606 map.put("US/Central", "Central Standard Time");
607 map.put("US/East-Indiana", "US Eastern Standard Time");
608 map.put("US/Eastern", "Eastern Standard Time");
609 map.put("US/Hawaii", "Hawaiian Standard Time");
610 map.put("US/Indiana-Starke", "Central Standard Time");
611 map.put("US/Michigan", "Eastern Standard Time");
612 map.put("US/Mountain", "Mountain Standard Time");
613 map.put("US/Pacific", "Pacific Standard Time");
614 map.put("US/Pacific-New", "Pacific Standard Time");
615 map.put("US/Samoa", "UTC-11");
616 map.put("UTC", "UTC");
617 map.put("Universal", "UTC");
618 map.put("W-SU", "Russian Standard Time");
619 map.put("Zulu", "UTC");
620 //additions outside of Unicode list
621 map.put("America/Adak", "Hawaiian Standard Time,(UTC-10:00) Hawaii");
622 map.put("America/Atka", "Hawaiian Standard Time,(UTC-10:00) Hawaii");
623 map.put("America/Metlakatla", "Pacific Standard Time");
624 map.put("America/Miquelon", "South America Standard Time");
625 map.put("Asia/Gaza", "Middle East Standard Time");
626 return map;
627 }
628
629 }