diff --git a/xCAT-server/lib/perl/xCAT/TZUtils.pm b/xCAT-server/lib/perl/xCAT/TZUtils.pm new file mode 100644 index 000000000..7d87a4aa3 --- /dev/null +++ b/xCAT-server/lib/perl/xCAT/TZUtils.pm @@ -0,0 +1,699 @@ +package xCAT::TZUtils; +my %posixtowintimezonemap = ( + "Etc/GMT+12" => "Dateline Standard Time", + "Etc/GMT+12" => "Dateline Standard Time", + "Etc/GMT+11" => "UTC-11", + "Pacific/Pago_Pago" => "UTC-11", + "Pacific/Niue" => "UTC-11", + "Pacific/Midway" => "UTC-11", + "Etc/GMT+11" => "UTC-11", + "Pacific/Honolulu" => "Hawaiian Standard Time", + "Pacific/Rarotonga" => "Hawaiian Standard Time", + "Pacific/Tahiti" => "Hawaiian Standard Time", + "Pacific/Johnston" => "Hawaiian Standard Time", + "Pacific/Honolulu" => "Hawaiian Standard Time", + "Etc/GMT+10" => "Hawaiian Standard Time", + "America/Anchorage" => "Alaskan Standard Time", + "America/Anchorage" => "Alaskan Standard Time", + "America/Juneau" => "Alaskan Standard Time", + "America/Nome" => "Alaskan Standard Time", + "America/Sitka" => "Alaskan Standard Time", + "America/Yakutat" => "Alaskan Standard Time", + "America/Santa_Isabel" => "Pacific Standard Time (Mexico)", + "America/Santa_Isabel" => "Pacific Standard Time (Mexico)", + "America/Los_Angeles" => "Pacific Standard Time", + "America/Vancouver" => "Pacific Standard Time", + "America/Dawson" => "Pacific Standard Time", + "America/Whitehorse" => "Pacific Standard Time", + "America/Tijuana" => "Pacific Standard Time", + "America/Los_Angeles" => "Pacific Standard Time", + "PST8PDT" => "Pacific Standard Time", + "America/Phoenix" => "US Mountain Standard Time", + "America/Dawson_Creek" => "US Mountain Standard Time", + "America/Creston" => "US Mountain Standard Time", + "America/Hermosillo" => "US Mountain Standard Time", + "America/Phoenix" => "US Mountain Standard Time", + "Etc/GMT+7" => "US Mountain Standard Time", + "America/Chihuahua" => "Mountain Standard Time (Mexico)", + "America/Chihuahua" => "Mountain Standard Time (Mexico)", + "America/Mazatlan" => "Mountain Standard Time (Mexico)", + "America/Denver" => "Mountain Standard Time", + "America/Edmonton" => "Mountain Standard Time", + "America/Cambridge_Bay" => "Mountain Standard Time", + "America/Inuvik" => "Mountain Standard Time", + "America/Yellowknife" => "Mountain Standard Time", + "America/Ojinaga" => "Mountain Standard Time", + "America/Denver" => "Mountain Standard Time", + "America/Boise" => "Mountain Standard Time", + "America/Shiprock" => "Mountain Standard Time", + "MST7MDT" => "Mountain Standard Time", + "America/Guatemala" => "Central America Standard Time", + "America/Belize" => "Central America Standard Time", + "America/Costa_Rica" => "Central America Standard Time", + "Pacific/Galapagos" => "Central America Standard Time", + "America/Guatemala" => "Central America Standard Time", + "America/Tegucigalpa" => "Central America Standard Time", + "America/Managua" => "Central America Standard Time", + "America/El_Salvador" => "Central America Standard Time", + "Etc/GMT+6" => "Central America Standard Time", + "America/Chicago" => "Central Standard Time", + "America/Winnipeg" => "Central Standard Time", + "America/Rainy_River" => "Central Standard Time", + "America/Rankin_Inlet" => "Central Standard Time", + "America/Resolute" => "Central Standard Time", + "America/Matamoros" => "Central Standard Time", + "America/Chicago" => "Central Standard Time", + "America/Indiana/Knox" => "Central Standard Time", + "America/Indiana/Tell_City" => "Central Standard Time", + "America/Menominee" => "Central Standard Time", + "America/North_Dakota/Beulah" => "Central Standard Time", + "America/North_Dakota/Center" => "Central Standard Time", + "America/North_Dakota/New_Salem" => "Central Standard Time", + "CST6CDT" => "Central Standard Time", + "America/Mexico_City" => "Central Standard Time (Mexico)", + "America/Mexico_City" => "Central Standard Time (Mexico)", + "America/Bahia_Banderas" => "Central Standard Time (Mexico)", + "America/Cancun" => "Central Standard Time (Mexico)", + "America/Merida" => "Central Standard Time (Mexico)", + "America/Monterrey" => "Central Standard Time (Mexico)", + "America/Regina" => "Canada Central Standard Time", + "America/Regina" => "Canada Central Standard Time", + "America/Swift_Current" => "Canada Central Standard Time", + "America/Bogota" => "SA Pacific Standard Time", + "America/Coral_Harbour" => "SA Pacific Standard Time", + "America/Bogota" => "SA Pacific Standard Time", + "America/Guayaquil" => "SA Pacific Standard Time", + "America/Port-au-Prince" => "SA Pacific Standard Time", + "America/Jamaica" => "SA Pacific Standard Time", + "America/Cayman" => "SA Pacific Standard Time", + "America/Panama" => "SA Pacific Standard Time", + "America/Lima" => "SA Pacific Standard Time", + "Etc/GMT+5" => "SA Pacific Standard Time", + "America/New_York" => "Eastern Standard Time", + "America/Nassau" => "Eastern Standard Time", + "America/Toronto" => "Eastern Standard Time", + "America/Iqaluit" => "Eastern Standard Time", + "America/Montreal" => "Eastern Standard Time", + "America/Nipigon" => "Eastern Standard Time", + "America/Pangnirtung" => "Eastern Standard Time", + "America/Thunder_Bay" => "Eastern Standard Time", + "America/Grand_Turk" => "Eastern Standard Time", + "America/New_York" => "Eastern Standard Time", + "America/Detroit" => "Eastern Standard Time", + "America/Indiana/Petersburg" => "Eastern Standard Time", + "America/Indiana/Vincennes" => "Eastern Standard Time", + "America/Indiana/Winamac" => "Eastern Standard Time", + "America/Kentucky/Monticello" => "Eastern Standard Time", + "America/Louisville" => "Eastern Standard Time", + "EST5EDT" => "Eastern Standard Time", + "America/Indianapolis" => "US Eastern Standard Time", + "America/Indianapolis" => "US Eastern Standard Time", + "America/Indiana/Marengo" => "US Eastern Standard Time", + "America/Indiana/Vevay" => "US Eastern Standard Time", + "America/Caracas" => "Venezuela Standard Time", + "America/Caracas" => "Venezuela Standard Time", + "America/Asuncion" => "Paraguay Standard Time", + "America/Asuncion" => "Paraguay Standard Time", + "America/Halifax" => "Atlantic Standard Time", + "Atlantic/Bermuda" => "Atlantic Standard Time", + "America/Halifax" => "Atlantic Standard Time", + "America/Glace_Bay" => "Atlantic Standard Time", + "America/Goose_Bay" => "Atlantic Standard Time", + "America/Moncton" => "Atlantic Standard Time", + "America/Thule" => "Atlantic Standard Time", + "America/Cuiaba" => "Central Brazilian Standard Time", + "America/Cuiaba" => "Central Brazilian Standard Time", + "America/Campo_Grande" => "Central Brazilian Standard Time", + "America/La_Paz" => "SA Western Standard Time", + "America/Antigua" => "SA Western Standard Time", + "America/Anguilla" => "SA Western Standard Time", + "America/Aruba" => "SA Western Standard Time", + "America/Barbados" => "SA Western Standard Time", + "America/St_Barthelemy" => "SA Western Standard Time", + "America/La_Paz" => "SA Western Standard Time", + "America/Kralendijk" => "SA Western Standard Time", + "America/Manaus" => "SA Western Standard Time", + "America/Boa_Vista" => "SA Western Standard Time", + "America/Eirunepe" => "SA Western Standard Time", + "America/Porto_Velho" => "SA Western Standard Time", + "America/Rio_Branco" => "SA Western Standard Time", + "America/Blanc-Sablon" => "SA Western Standard Time", + "America/Curacao" => "SA Western Standard Time", + "America/Dominica" => "SA Western Standard Time", + "America/Santo_Domingo" => "SA Western Standard Time", + "America/Grenada" => "SA Western Standard Time", + "America/Guadeloupe" => "SA Western Standard Time", + "America/Guyana" => "SA Western Standard Time", + "America/St_Kitts" => "SA Western Standard Time", + "America/St_Lucia" => "SA Western Standard Time", + "America/Marigot" => "SA Western Standard Time", + "America/Martinique" => "SA Western Standard Time", + "America/Montserrat" => "SA Western Standard Time", + "America/Puerto_Rico" => "SA Western Standard Time", + "America/Lower_Princes" => "SA Western Standard Time", + "America/Port_of_Spain" => "SA Western Standard Time", + "America/St_Vincent" => "SA Western Standard Time", + "America/Tortola" => "SA Western Standard Time", + "America/St_Thomas" => "SA Western Standard Time", + "Etc/GMT+4" => "SA Western Standard Time", + "America/Santiago" => "Pacific SA Standard Time", + "Antarctica/Palmer" => "Pacific SA Standard Time", + "America/Santiago" => "Pacific SA Standard Time", + "America/St_Johns" => "Newfoundland Standard Time", + "America/St_Johns" => "Newfoundland Standard Time", + "America/Sao_Paulo" => "E. South America Standard Time", + "America/Sao_Paulo" => "E. South America Standard Time", + "America/Buenos_Aires" => "Argentina Standard Time", + "America/Buenos_Aires" => "Argentina Standard Time", + "America/Argentina/La_Rioja" => "Argentina Standard Time", + "America/Argentina/Rio_Gallegos" => "Argentina Standard Time", + "America/Argentina/Salta" => "Argentina Standard Time", + "America/Argentina/San_Juan" => "Argentina Standard Time", + "America/Argentina/San_Luis" => "Argentina Standard Time", + "America/Argentina/Tucuman" => "Argentina Standard Time", + "America/Argentina/Ushuaia" => "Argentina Standard Time", + "America/Catamarca" => "Argentina Standard Time", + "America/Cordoba" => "Argentina Standard Time", + "America/Jujuy" => "Argentina Standard Time", + "America/Mendoza" => "Argentina Standard Time", + "America/Cayenne" => "SA Eastern Standard Time", + "Antarctica/Rothera" => "SA Eastern Standard Time", + "America/Fortaleza" => "SA Eastern Standard Time", + "America/Araguaina" => "SA Eastern Standard Time", + "America/Belem" => "SA Eastern Standard Time", + "America/Maceio" => "SA Eastern Standard Time", + "America/Recife" => "SA Eastern Standard Time", + "America/Santarem" => "SA Eastern Standard Time", + "Atlantic/Stanley" => "SA Eastern Standard Time", + "America/Cayenne" => "SA Eastern Standard Time", + "America/Paramaribo" => "SA Eastern Standard Time", + "Etc/GMT+3" => "SA Eastern Standard Time", + "America/Godthab" => "Greenland Standard Time", + "America/Godthab" => "Greenland Standard Time", + "America/Montevideo" => "Montevideo Standard Time", + "America/Montevideo" => "Montevideo Standard Time", + "America/Bahia" => "Bahia Standard Time", + "America/Bahia" => "Bahia Standard Time", + "Etc/GMT+2" => "UTC-02", + "America/Noronha" => "UTC-02", + "Atlantic/South_Georgia" => "UTC-02", + "Etc/GMT+2" => "UTC-02", + "Atlantic/Azores" => "Azores Standard Time", + "America/Scoresbysund" => "Azores Standard Time", + "Atlantic/Azores" => "Azores Standard Time", + "Atlantic/Cape_Verde" => "Cape Verde Standard Time", + "Atlantic/Cape_Verde" => "Cape Verde Standard Time", + "Etc/GMT+1" => "Cape Verde Standard Time", + "Africa/Casablanca" => "Morocco Standard Time", + "Africa/Casablanca" => "Morocco Standard Time", + "Etc/GMT" => "UTC", + "America/Danmarkshavn" => "UTC", + "Etc/GMT" => "UTC", + "Europe/London" => "GMT Standard Time", + "Atlantic/Canary" => "GMT Standard Time", + "Atlantic/Faeroe" => "GMT Standard Time", + "Europe/London" => "GMT Standard Time", + "Europe/Guernsey" => "GMT Standard Time", + "Europe/Dublin" => "GMT Standard Time", + "Europe/Isle_of_Man" => "GMT Standard Time", + "Europe/Jersey" => "GMT Standard Time", + "Europe/Lisbon" => "GMT Standard Time", + "Atlantic/Madeira" => "GMT Standard Time", + "Atlantic/Reykjavik" => "Greenwich Standard Time", + "Africa/Ouagadougou" => "Greenwich Standard Time", + "Africa/Abidjan" => "Greenwich Standard Time", + "Africa/El_Aaiun" => "Greenwich Standard Time", + "Africa/Accra" => "Greenwich Standard Time", + "Africa/Banjul" => "Greenwich Standard Time", + "Africa/Conakry" => "Greenwich Standard Time", + "Africa/Bissau" => "Greenwich Standard Time", + "Atlantic/Reykjavik" => "Greenwich Standard Time", + "Africa/Monrovia" => "Greenwich Standard Time", + "Africa/Bamako" => "Greenwich Standard Time", + "Africa/Nouakchott" => "Greenwich Standard Time", + "Atlantic/St_Helena" => "Greenwich Standard Time", + "Africa/Freetown" => "Greenwich Standard Time", + "Africa/Dakar" => "Greenwich Standard Time", + "Africa/Sao_Tome" => "Greenwich Standard Time", + "Africa/Lome" => "Greenwich Standard Time", + "Europe/Berlin" => "W. Europe Standard Time", + "Europe/Andorra" => "W. Europe Standard Time", + "Europe/Vienna" => "W. Europe Standard Time", + "Europe/Zurich" => "W. Europe Standard Time", + "Europe/Berlin" => "W. Europe Standard Time", + "Europe/Gibraltar" => "W. Europe Standard Time", + "Europe/Rome" => "W. Europe Standard Time", + "Europe/Vaduz" => "W. Europe Standard Time", + "Europe/Luxembourg" => "W. Europe Standard Time", + "Europe/Monaco" => "W. Europe Standard Time", + "Europe/Malta" => "W. Europe Standard Time", + "Europe/Amsterdam" => "W. Europe Standard Time", + "Europe/Oslo" => "W. Europe Standard Time", + "Europe/Stockholm" => "W. Europe Standard Time", + "Arctic/Longyearbyen" => "W. Europe Standard Time", + "Europe/San_Marino" => "W. Europe Standard Time", + "Europe/Vatican" => "W. Europe Standard Time", + "Europe/Budapest" => "Central Europe Standard Time", + "Europe/Tirane" => "Central Europe Standard Time", + "Europe/Prague" => "Central Europe Standard Time", + "Europe/Budapest" => "Central Europe Standard Time", + "Europe/Podgorica" => "Central Europe Standard Time", + "Europe/Belgrade" => "Central Europe Standard Time", + "Europe/Ljubljana" => "Central Europe Standard Time", + "Europe/Bratislava" => "Central Europe Standard Time", + "Europe/Paris" => "Romance Standard Time", + "Europe/Brussels" => "Romance Standard Time", + "Europe/Copenhagen" => "Romance Standard Time", + "Europe/Madrid" => "Romance Standard Time", + "Africa/Ceuta" => "Romance Standard Time", + "Europe/Paris" => "Romance Standard Time", + "Europe/Warsaw" => "Central European Standard Time", + "Europe/Sarajevo" => "Central European Standard Time", + "Europe/Zagreb" => "Central European Standard Time", + "Europe/Skopje" => "Central European Standard Time", + "Europe/Warsaw" => "Central European Standard Time", + "Africa/Lagos" => "W. Central Africa Standard Time", + "Africa/Luanda" => "W. Central Africa Standard Time", + "Africa/Porto-Novo" => "W. Central Africa Standard Time", + "Africa/Kinshasa" => "W. Central Africa Standard Time", + "Africa/Bangui" => "W. Central Africa Standard Time", + "Africa/Brazzaville" => "W. Central Africa Standard Time", + "Africa/Douala" => "W. Central Africa Standard Time", + "Africa/Algiers" => "W. Central Africa Standard Time", + "Africa/Libreville" => "W. Central Africa Standard Time", + "Africa/Malabo" => "W. Central Africa Standard Time", + "Africa/Niamey" => "W. Central Africa Standard Time", + "Africa/Lagos" => "W. Central Africa Standard Time", + "Africa/Ndjamena" => "W. Central Africa Standard Time", + "Africa/Tunis" => "W. Central Africa Standard Time", + "Etc/GMT-1" => "W. Central Africa Standard Time", + "Africa/Windhoek" => "Namibia Standard Time", + "Africa/Windhoek" => "Namibia Standard Time", + "Asia/Amman" => "Jordan Standard Time", + "Asia/Amman" => "Jordan Standard Time", + "Europe/Bucharest" => "GTB Standard Time", + "Europe/Athens" => "GTB Standard Time", + "Europe/Chisinau" => "GTB Standard Time", + "Europe/Bucharest" => "GTB Standard Time", + "Asia/Beirut" => "Middle East Standard Time", + "Asia/Beirut" => "Middle East Standard Time", + "Africa/Cairo" => "Egypt Standard Time", + "Africa/Cairo" => "Egypt Standard Time", + "Asia/Gaza" => "Egypt Standard Time", + "Asia/Hebron" => "Egypt Standard Time", + "Asia/Damascus" => "Syria Standard Time", + "Asia/Damascus" => "Syria Standard Time", + "Africa/Johannesburg" => "South Africa Standard Time", + "Africa/Bujumbura" => "South Africa Standard Time", + "Africa/Gaborone" => "South Africa Standard Time", + "Africa/Lubumbashi" => "South Africa Standard Time", + "Africa/Maseru" => "South Africa Standard Time", + "Africa/Tripoli" => "South Africa Standard Time", + "Africa/Blantyre" => "South Africa Standard Time", + "Africa/Maputo" => "South Africa Standard Time", + "Africa/Kigali" => "South Africa Standard Time", + "Africa/Mbabane" => "South Africa Standard Time", + "Africa/Johannesburg" => "South Africa Standard Time", + "Africa/Lusaka" => "South Africa Standard Time", + "Africa/Harare" => "South Africa Standard Time", + "Etc/GMT-2" => "South Africa Standard Time", + "Europe/Kiev" => "FLE Standard Time", + "Europe/Mariehamn" => "FLE Standard Time", + "Europe/Sofia" => "FLE Standard Time", + "Europe/Tallinn" => "FLE Standard Time", + "Europe/Helsinki" => "FLE Standard Time", + "Europe/Vilnius" => "FLE Standard Time", + "Europe/Riga" => "FLE Standard Time", + "Europe/Kiev" => "FLE Standard Time", + "Europe/Simferopol" => "FLE Standard Time", + "Europe/Uzhgorod" => "FLE Standard Time", + "Europe/Zaporozhye" => "FLE Standard Time", + "Europe/Istanbul" => "Turkey Standard Time", + "Europe/Istanbul" => "Turkey Standard Time", + "Asia/Jerusalem" => "Israel Standard Time", + "Asia/Jerusalem" => "Israel Standard Time", + "Asia/Nicosia" => "E. Europe Standard Time", + "Asia/Nicosia" => "E. Europe Standard Time", + "Asia/Baghdad" => "Arabic Standard Time", + "Asia/Baghdad" => "Arabic Standard Time", + "Europe/Kaliningrad" => "Kaliningrad Standard Time", + "Europe/Minsk" => "Kaliningrad Standard Time", + "Europe/Kaliningrad" => "Kaliningrad Standard Time", + "Asia/Riyadh" => "Arab Standard Time", + "Asia/Bahrain" => "Arab Standard Time", + "Asia/Kuwait" => "Arab Standard Time", + "Asia/Qatar" => "Arab Standard Time", + "Asia/Riyadh" => "Arab Standard Time", + "Asia/Aden" => "Arab Standard Time", + "Africa/Nairobi" => "E. Africa Standard Time", + "Antarctica/Syowa" => "E. Africa Standard Time", + "Africa/Djibouti" => "E. Africa Standard Time", + "Africa/Asmera" => "E. Africa Standard Time", + "Africa/Addis_Ababa" => "E. Africa Standard Time", + "Africa/Nairobi" => "E. Africa Standard Time", + "Indian/Comoro" => "E. Africa Standard Time", + "Indian/Antananarivo" => "E. Africa Standard Time", + "Africa/Khartoum" => "E. Africa Standard Time", + "Africa/Mogadishu" => "E. Africa Standard Time", + "Africa/Juba" => "E. Africa Standard Time", + "Africa/Dar_es_Salaam" => "E. Africa Standard Time", + "Africa/Kampala" => "E. Africa Standard Time", + "Indian/Mayotte" => "E. Africa Standard Time", + "Etc/GMT-3" => "E. Africa Standard Time", + "Asia/Tehran" => "Iran Standard Time", + "Asia/Tehran" => "Iran Standard Time", + "Asia/Dubai" => "Arabian Standard Time", + "Asia/Dubai" => "Arabian Standard Time", + "Asia/Muscat" => "Arabian Standard Time", + "Etc/GMT-4" => "Arabian Standard Time", + "Asia/Baku" => "Azerbaijan Standard Time", + "Asia/Baku" => "Azerbaijan Standard Time", + "Europe/Moscow" => "Russian Standard Time", + "Europe/Moscow" => "Russian Standard Time", + "Europe/Samara" => "Russian Standard Time", + "Europe/Volgograd" => "Russian Standard Time", + "Indian/Mauritius" => "Mauritius Standard Time", + "Indian/Mauritius" => "Mauritius Standard Time", + "Indian/Reunion" => "Mauritius Standard Time", + "Indian/Mahe" => "Mauritius Standard Time", + "Asia/Tbilisi" => "Georgian Standard Time", + "Asia/Tbilisi" => "Georgian Standard Time", + "Asia/Yerevan" => "Caucasus Standard Time", + "Asia/Yerevan" => "Caucasus Standard Time", + "Asia/Kabul" => "Afghanistan Standard Time", + "Asia/Kabul" => "Afghanistan Standard Time", + "Asia/Karachi" => "Pakistan Standard Time", + "Asia/Karachi" => "Pakistan Standard Time", + "Asia/Tashkent" => "West Asia Standard Time", + "Antarctica/Mawson" => "West Asia Standard Time", + "Asia/Oral" => "West Asia Standard Time", + "Asia/Aqtau" => "West Asia Standard Time", + "Asia/Aqtobe" => "West Asia Standard Time", + "Indian/Maldives" => "West Asia Standard Time", + "Indian/Kerguelen" => "West Asia Standard Time", + "Asia/Dushanbe" => "West Asia Standard Time", + "Asia/Ashgabat" => "West Asia Standard Time", + "Asia/Tashkent" => "West Asia Standard Time", + "Asia/Samarkand" => "West Asia Standard Time", + "Etc/GMT-5" => "West Asia Standard Time", + "Asia/Calcutta" => "India Standard Time", + "Asia/Calcutta" => "India Standard Time", + "Asia/Colombo" => "Sri Lanka Standard Time", + "Asia/Colombo" => "Sri Lanka Standard Time", + "Asia/Katmandu" => "Nepal Standard Time", + "Asia/Katmandu" => "Nepal Standard Time", + "Asia/Almaty" => "Central Asia Standard Time", + "Antarctica/Vostok" => "Central Asia Standard Time", + "Indian/Chagos" => "Central Asia Standard Time", + "Asia/Bishkek" => "Central Asia Standard Time", + "Asia/Almaty" => "Central Asia Standard Time", + "Asia/Qyzylorda" => "Central Asia Standard Time", + "Etc/GMT-6" => "Central Asia Standard Time", + "Asia/Dhaka" => "Bangladesh Standard Time", + "Asia/Dhaka" => "Bangladesh Standard Time", + "Asia/Thimphu" => "Bangladesh Standard Time", + "Asia/Yekaterinburg" => "Ekaterinburg Standard Time", + "Asia/Yekaterinburg" => "Ekaterinburg Standard Time", + "Asia/Rangoon" => "Myanmar Standard Time", + "Indian/Cocos" => "Myanmar Standard Time", + "Asia/Rangoon" => "Myanmar Standard Time", + "Asia/Bangkok" => "SE Asia Standard Time", + "Antarctica/Davis" => "SE Asia Standard Time", + "Indian/Christmas" => "SE Asia Standard Time", + "Asia/Jakarta" => "SE Asia Standard Time", + "Asia/Pontianak" => "SE Asia Standard Time", + "Asia/Phnom_Penh" => "SE Asia Standard Time", + "Asia/Vientiane" => "SE Asia Standard Time", + "Asia/Hovd" => "SE Asia Standard Time", + "Asia/Bangkok" => "SE Asia Standard Time", + "Asia/Saigon" => "SE Asia Standard Time", + "Etc/GMT-7" => "SE Asia Standard Time", + "Asia/Novosibirsk" => "N. Central Asia Standard Time", + "Asia/Novosibirsk" => "N. Central Asia Standard Time", + "Asia/Novokuznetsk" => "N. Central Asia Standard Time", + "Asia/Omsk" => "N. Central Asia Standard Time", + "Asia/Shanghai" => "China Standard Time", + "Asia/Shanghai" => "China Standard Time", + "Asia/Chongqing" => "China Standard Time", + "Asia/Harbin" => "China Standard Time", + "Asia/Kashgar" => "China Standard Time", + "Asia/Urumqi" => "China Standard Time", + "Asia/Hong_Kong" => "China Standard Time", + "Asia/Macau" => "China Standard Time", + "Asia/Krasnoyarsk" => "North Asia Standard Time", + "Asia/Krasnoyarsk" => "North Asia Standard Time", + "Asia/Singapore" => "Singapore Standard Time", + "Asia/Brunei" => "Singapore Standard Time", + "Asia/Makassar" => "Singapore Standard Time", + "Asia/Kuala_Lumpur" => "Singapore Standard Time", + "Asia/Kuching" => "Singapore Standard Time", + "Asia/Manila" => "Singapore Standard Time", + "Asia/Singapore" => "Singapore Standard Time", + "Etc/GMT-8" => "Singapore Standard Time", + "Australia/Perth" => "W. Australia Standard Time", + "Antarctica/Casey" => "W. Australia Standard Time", + "Australia/Perth" => "W. Australia Standard Time", + "Asia/Taipei" => "Taipei Standard Time", + "Asia/Taipei" => "Taipei Standard Time", + "Asia/Ulaanbaatar" => "Ulaanbaatar Standard Time", + "Asia/Ulaanbaatar" => "Ulaanbaatar Standard Time", + "Asia/Choibalsan" => "Ulaanbaatar Standard Time", + "Asia/Irkutsk" => "North Asia East Standard Time", + "Asia/Irkutsk" => "North Asia East Standard Time", + "Asia/Tokyo" => "Tokyo Standard Time", + "Asia/Jayapura" => "Tokyo Standard Time", + "Asia/Tokyo" => "Tokyo Standard Time", + "Pacific/Palau" => "Tokyo Standard Time", + "Asia/Dili" => "Tokyo Standard Time", + "Etc/GMT-9" => "Tokyo Standard Time", + "Asia/Seoul" => "Korea Standard Time", + "Asia/Pyongyang" => "Korea Standard Time", + "Asia/Seoul" => "Korea Standard Time", + "Australia/Adelaide" => "Cen. Australia Standard Time", + "Australia/Adelaide" => "Cen. Australia Standard Time", + "Australia/Broken_Hill" => "Cen. Australia Standard Time", + "Australia/Darwin" => "AUS Central Standard Time", + "Australia/Darwin" => "AUS Central Standard Time", + "Australia/Brisbane" => "E. Australia Standard Time", + "Australia/Brisbane" => "E. Australia Standard Time", + "Australia/Lindeman" => "E. Australia Standard Time", + "Australia/Sydney" => "AUS Eastern Standard Time", + "Australia/Sydney" => "AUS Eastern Standard Time", + "Australia/Melbourne" => "AUS Eastern Standard Time", + "Pacific/Port_Moresby" => "West Pacific Standard Time", + "Antarctica/DumontDUrville" => "West Pacific Standard Time", + "Pacific/Truk" => "West Pacific Standard Time", + "Pacific/Guam" => "West Pacific Standard Time", + "Pacific/Saipan" => "West Pacific Standard Time", + "Pacific/Port_Moresby" => "West Pacific Standard Time", + "Etc/GMT-10" => "West Pacific Standard Time", + "Australia/Hobart" => "Tasmania Standard Time", + "Australia/Hobart" => "Tasmania Standard Time", + "Australia/Currie" => "Tasmania Standard Time", + "Asia/Yakutsk" => "Yakutsk Standard Time", + "Asia/Yakutsk" => "Yakutsk Standard Time", + "Pacific/Guadalcanal" => "Central Pacific Standard Time", + "Antarctica/Macquarie" => "Central Pacific Standard Time", + "Pacific/Ponape" => "Central Pacific Standard Time", + "Pacific/Kosrae" => "Central Pacific Standard Time", + "Pacific/Noumea" => "Central Pacific Standard Time", + "Pacific/Guadalcanal" => "Central Pacific Standard Time", + "Pacific/Efate" => "Central Pacific Standard Time", + "Etc/GMT-11" => "Central Pacific Standard Time", + "Asia/Vladivostok" => "Vladivostok Standard Time", + "Asia/Vladivostok" => "Vladivostok Standard Time", + "Asia/Sakhalin" => "Vladivostok Standard Time", + "Pacific/Auckland" => "New Zealand Standard Time", + "Antarctica/South_Pole" => "New Zealand Standard Time", + "Antarctica/McMurdo" => "New Zealand Standard Time", + "Pacific/Auckland" => "New Zealand Standard Time", + "Etc/GMT-12" => "UTC+12", + "Pacific/Tarawa" => "UTC+12", + "Pacific/Majuro" => "UTC+12", + "Pacific/Kwajalein" => "UTC+12", + "Pacific/Nauru" => "UTC+12", + "Pacific/Funafuti" => "UTC+12", + "Pacific/Wake" => "UTC+12", + "Pacific/Wallis" => "UTC+12", + "Etc/GMT-12" => "UTC+12", + "Pacific/Fiji" => "Fiji Standard Time", + "Pacific/Fiji" => "Fiji Standard Time", + "Asia/Magadan" => "Magadan Standard Time", + "Asia/Magadan" => "Magadan Standard Time", + "Asia/Anadyr" => "Magadan Standard Time", + "Asia/Kamchatka" => "Magadan Standard Time", + "Pacific/Tongatapu" => "Tonga Standard Time", + "Pacific/Enderbury" => "Tonga Standard Time", + "Pacific/Tongatapu" => "Tonga Standard Time", + "Etc/GMT-13" => "Tonga Standard Time", + "Pacific/Apia" => "Samoa Standard Time", + "Pacific/Apia" => "Samoa Standard Time", +); + +my %wintimezonenummap = (#despite certain elements *requiring* this number, this mapping is actually hard to find as MS themselves seem to not use it anymore even + "Dateline Standard Time" => 0, + "(GMT-12:00) International Date Line West" => 0, + "Samoa Standard Time" => 1, + "(GMT-11:00) Midway Island, Samoa" => 1, + "Hawaiian Standard Time" => 2, + "(GMT-10:00) Hawaii" => 2, + "Alaskan Standard Time" => 3, + "(GMT-09:00) Alaska" => 3, + "Pacific Standard Time" => 4, + "(GMT-08:00) Pacific Time (US and Canada); Tijuana" => 4, + "Mountain Standard Time" => 10, + "(GMT-07:00) Mountain Time (US and Canada)" => 10, + "Mexico Standard Time 2" => 13, + "(GMT-07:00) Chihuahua, La Paz, Mazatlan" => 13, + "U.S. Mountain Standard Time" => 15, + "(GMT-07:00) Arizona" => 15, + "Central Standard Time" => 20, + "(GMT-06:00) Central Time (US and Canada)" => 20, + "Canada Central Standard Time" => 25, + "(GMT-06:00) Saskatchewan" => 25, + "Mexico Standard Time" => 30, + "(GMT-06:00) Guadalajara, Mexico City, Monterrey" => 30, + "Central America Standard Time" => 33, + "(GMT-06:00) Central America" => 33, + "Eastern Standard Time" => 35, + "(GMT-05:00) Eastern Time (US and Canada)" => 35, + "U.S. Eastern Standard Time" => 40, + "(GMT-05:00) Indiana (East)" => 40, + "S.A. Pacific Standard Time" => 45, + "(GMT-05:00) Bogota, Lima, Quito" => 45, + "Atlantic Standard Time" => 50, + "(GMT-04:00) Atlantic Time (Canada)" => 50, + "S.A. Western Standard Time" => 55, + "(GMT-04:00) Caracas, La Paz" => 55, + "Pacific S.A. Standard Time" => 56, + "(GMT-04:00) Santiago" => 56, + "Newfoundland and Labrador Standard Time" => 60, + "(GMT-03:30) Newfoundland and Labrador" => 60, + "E. South America Standard Time" => 65, + "(GMT-03:00) Brasilia" => 65, + "S.A. Eastern Standard Time" => 70, + "(GMT-03:00) Buenos Aires, Georgetown" => 70, + "Greenland Standard Time" => 73, + "(GMT-03:00) Greenland" => 73, + "Mid-Atlantic Standard Time" => 75, + "(GMT-02:00) Mid-Atlantic" => 75, + "Azores Standard Time" => 80, + "(GMT-01:00) Azores" => 80, + "Cape Verde Standard Time" => 83, + "(GMT-01:00) Cape Verde Islands" => 83, + "GMT Standard Time" => 85, + "(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London" => 85, + "Greenwich Standard Time" => 90, + "(GMT) Casablanca, Monrovia" => 90, + "Central Europe Standard Time" => 95, + "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague" => 95, + "Central European Standard Time" => 100, + "(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb" => 100, + "Romance Standard Time" => 105, + "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris" => 105, + "W. Europe Standard Time" => 110, + "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna" => 110, + "W. Central Africa Standard Time" => 113, + "(GMT+01:00) West Central Africa" => 113, + "E. Europe Standard Time" => 115, + "(GMT+02:00) Bucharest" => 115, + "Egypt Standard Time" => 120, + "(GMT+02:00) Cairo" => 120, + "FLE Standard Time" => 125, + "(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius" => 125, + "GTB Standard Time" => 130, + "(GMT+02:00) Athens, Istanbul, Minsk" => 130, + "Israel Standard Time" => 135, + "(GMT+02:00) Jerusalem" => 135, + "South Africa Standard Time" => 140, + "(GMT+02:00) Harare, Pretoria" => 140, + "Russian Standard Time" => 145, + "(GMT+03:00) Moscow, St. Petersburg, Volgograd" => 145, + "Arab Standard Time" => 150, + "(GMT+03:00) Kuwait, Riyadh" => 150, + "E. Africa Standard Time" => 155, + "(GMT+03:00) Nairobi" => 155, + "Arabic Standard Time" => 158, + "(GMT+03:00) Baghdad" => 158, + "Iran Standard Time" => 160, + "(GMT+03:30) Tehran" => 160, + "Arabian Standard Time" => 165, + "(GMT+04:00) Abu Dhabi, Muscat" => 165, + "Caucasus Standard Time" => 170, + "(GMT+04:00) Baku, Tbilisi, Yerevan" => 170, + "Transitional Islamic State of Afghanistan Std." => 175, + "(GMT+04:30) Kabul" => 175, + "Ekaterinburg Standard Time" => 180, + "(GMT+05:00) Ekaterinburg" => 180, + "West Asia Standard Time" => 185, + "(GMT+05:00) Islamabad, Karachi, Tashkent" => 185, + "India Standard Time" => 190, + "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi" => 190, + "Nepal Standard Time" => 193, + "(GMT+05:45) Kathmandu" => 193, + "Central Asia Standard Time" => 195, + "(GMT+06:00) Astana, Dhaka" => 195, + "Sri Lanka Standard Time" => 200, + "(GMT+06:00) Sri Jayawardenepura" => 200, + "N. Central Asia Standard Time" => 201, + "(GMT+06:00) Almaty, Novosibirsk" => 201, + "Myanmar Standard Time" => 203, + "(GMT+06:30) Yangon (Rangoon)" => 203, + "S.E. Asia Standard Time" => 205, + "(GMT+07:00) Bangkok, Hanoi, Jakarta" => 205, + "North Asia Standard Time" => 207, + "(GMT+07:00) Krasnoyarsk" => 207, + "China Standard Time" => 210, + "(GMT+08:00) Beijing, Chongqing, Hong Kong SAR, Urumqi" => 210, + "Singapore Standard Time" => 215, + "(GMT+08:00) Kuala Lumpur, Singapore" => 215, + "Taipei Standard Time" => 220, + "(GMT+08:00) Taipei" => 220, + "W. Australia Standard Time" => 225, + "(GMT+08:00) Perth" => 225, + "North Asia East Standard Time" => 227, + "(GMT+08:00) Irkutsk, Ulaan Bataar" => 227, + "Korea Standard Time" => 230, + "(GMT+09:00) Seoul" => 230, + "Tokyo Standard Time" => 235, + "(GMT+09:00) Osaka, Sapporo, Tokyo" => 235, + "Yakutsk Standard Time" => 240, + "(GMT+09:00) Yakutsk" => 240, + "A.U.S. Central Standard Time" => 245, + "(GMT+09:30) Darwin" => 245, + "Cen. Australia Standard Time" => 250, + "(GMT+09:30) Adelaide" => 250, + "A.U.S. Eastern Standard Time" => 255, + "(GMT+10:00) Canberra, Melbourne, Sydney" => 255, + "E. Australia Standard Time" => 260, + "(GMT+10:00) Brisbane" => 260, + "Tasmania Standard Time" => 265, + "(GMT+10:00) Hobart" => 265, + "Vladivostok Standard Time" => 270, + "(GMT+10:00) Vladivostok" => 270, + "West Pacific Standard Time" => 275, + "(GMT+10:00) Guam, Port Moresby" => 275, + "Central Pacific Standard Time" => 280, + "(GMT+11:00) Magadan, Solomon Islands, New Caledonia" => 280, + "Fiji Islands Standard Time" => 285, + "(GMT+12:00) Fiji Islands, Kamchatka, Marshall Islands" => 285, + "New Zealand Standard Time" => 290, + "(GMT+12:00) Auckland, Wellington" => 290, + "Tonga Standard Time" => 300, + "(GMT+13:00) Nuku'alofa" => 300, +); +sub get_wintimezone { + if ($::XCATSITEVALS{'wintimezone'}) { + return $::XCATSITEVALS{'wintimezone'}; + } elsif ($::XCATSITEVALS{'timezone'}) { + return $posixtowintimezonemap{::XCATSITEVALS{'timezone'}}; + } +} + +sub get_wintimezonenum { + my $wintimezone = get_wintimezone(); + return $wintimezonenummap{$wintimezone}; +}; + + +1;