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 024package microsoft.exchange.webservices.data.util; 025 026import java.util.HashMap; 027import java.util.Map; 028import java.util.TimeZone; 029 030/** 031 * Miscellany timezone functions 032 */ 033public 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}