Private/ConvertTo-LMSDTEpochMillis.ps1
|
$Script:IANAtoWindows = @{ 'Etc/GMT+12' = 'Dateline Standard Time' 'Etc/GMT+11' = 'UTC-11' 'Pacific/Pago_Pago' = 'UTC-11' 'Pacific/Niue' = 'UTC-11' 'Pacific/Midway' = 'UTC-11' 'America/Adak' = 'Aleutian Standard Time' 'Pacific/Honolulu' = 'Hawaiian Standard Time' 'Pacific/Rarotonga' = 'Hawaiian Standard Time' 'Pacific/Tahiti' = 'Hawaiian Standard Time' 'Pacific/Johnston' = 'Hawaiian Standard Time' 'Etc/GMT+10' = 'Hawaiian Standard Time' 'Pacific/Marquesas' = 'Marquesas Standard Time' 'America/Anchorage' = 'Alaskan Standard Time' 'America/Juneau' = 'Alaskan Standard Time' 'America/Metlakatla' = 'Alaskan Standard Time' 'America/Nome' = 'Alaskan Standard Time' 'America/Sitka' = 'Alaskan Standard Time' 'America/Yakutat' = 'Alaskan Standard Time' 'Etc/GMT+9' = 'UTC-09' 'Pacific/Gambier' = 'UTC-09' 'America/Tijuana' = 'Pacific Standard Time (Mexico)' 'America/Santa_Isabel' = 'Pacific Standard Time (Mexico)' 'Etc/GMT+8' = 'UTC-08' 'Pacific/Pitcairn' = 'UTC-08' 'America/Los_Angeles' = 'Pacific Standard Time' 'America/Vancouver' = 'Pacific Standard Time' 'America/Dawson' = 'Pacific Standard Time' 'America/Whitehorse' = '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/Fort_Nelson' = 'US Mountain Standard Time' 'America/Hermosillo' = 'US Mountain Standard Time' 'Etc/GMT+7' = 'US Mountain Standard Time' '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/Boise' = '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/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/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' 'Pacific/Easter' = 'Easter Island Standard Time' 'America/Mexico_City' = 'Central Standard Time (Mexico)' 'America/Bahia_Banderas' = 'Central Standard Time (Mexico)' 'America/Merida' = 'Central Standard Time (Mexico)' 'America/Monterrey' = 'Central Standard Time (Mexico)' 'America/Regina' = 'Canada Central Standard Time' 'America/Swift_Current' = 'Canada Central Standard Time' 'America/Bogota' = 'SA Pacific Standard Time' 'America/Rio_Branco' = 'SA Pacific Standard Time' 'America/Eirunepe' = 'SA Pacific Standard Time' 'America/Coral_Harbour' = 'SA Pacific Standard Time' 'America/Guayaquil' = '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/Cancun' = 'Eastern Standard Time (Mexico)' '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/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/Port-au-Prince' = 'Haiti Standard Time' 'America/Havana' = 'Cuba Standard Time' 'America/Indianapolis' = 'US Eastern Standard Time' 'America/Indiana/Indianapolis' = 'US Eastern Standard Time' 'America/Indiana/Marengo' = 'US Eastern Standard Time' 'America/Indiana/Vevay' = 'US Eastern Standard Time' 'America/Grand_Turk' = 'Turks And Caicos Standard Time' 'America/Asuncion' = 'Paraguay Standard Time' 'America/Halifax' = 'Atlantic Standard Time' 'Atlantic/Bermuda' = '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/Caracas' = 'Venezuela 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/Kralendijk' = 'SA Western Standard Time' 'America/Manaus' = 'SA Western Standard Time' 'America/Boa_Vista' = 'SA Western Standard Time' 'America/Porto_Velho' = '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' 'America/St_Johns' = 'Newfoundland Standard Time' 'America/Araguaina' = 'Tocantins Standard Time' 'America/Sao_Paulo' = 'E. South America Standard Time' 'America/Cayenne' = 'SA Eastern Standard Time' 'Antarctica/Rothera' = 'SA Eastern Standard Time' 'Antarctica/Palmer' = 'SA Eastern Standard Time' 'America/Fortaleza' = '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/Paramaribo' = 'SA Eastern Standard Time' 'Etc/GMT+3' = 'SA Eastern Standard Time' 'America/Buenos_Aires' = 'Argentina Standard Time' 'America/Argentina/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/Godthab' = 'Greenland Standard Time' 'America/Nuuk' = 'Greenland Standard Time' 'America/Montevideo' = 'Montevideo Standard Time' 'America/Punta_Arenas' = 'Magallanes Standard Time' 'America/Miquelon' = 'Saint Pierre Standard Time' 'America/Bahia' = 'Bahia Standard Time' 'Etc/GMT+2' = 'UTC-02' 'America/Noronha' = 'UTC-02' 'Atlantic/South_Georgia' = 'UTC-02' 'Atlantic/Azores' = 'Azores Standard Time' 'America/Scoresbysund' = 'Azores Standard Time' 'Atlantic/Cape_Verde' = 'Cape Verde Standard Time' 'Etc/GMT+1' = 'Cape Verde Standard Time' 'Etc/GMT' = 'UTC' 'America/Danmarkshavn' = 'UTC' 'Etc/UTC' = 'UTC' 'UTC' = 'UTC' 'Europe/London' = 'GMT Standard Time' 'Atlantic/Canary' = 'GMT Standard Time' 'Atlantic/Faeroe' = 'GMT Standard Time' 'Atlantic/Faroe' = '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/Accra' = 'Greenwich Standard Time' 'Africa/Banjul' = 'Greenwich Standard Time' 'Africa/Conakry' = 'Greenwich Standard Time' 'Africa/Bissau' = '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/Lome' = 'Greenwich Standard Time' 'Africa/Sao_Tome' = 'Sao Tome Standard Time' 'Africa/Casablanca' = 'Morocco Standard Time' 'Africa/El_Aaiun' = 'Morocco 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/Busingen' = '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/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/Warsaw' = 'Central European Standard Time' 'Europe/Sarajevo' = 'Central European Standard Time' 'Europe/Zagreb' = 'Central European Standard Time' 'Europe/Skopje' = '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/Ndjamena' = 'W. Central Africa Standard Time' 'Africa/Tunis' = 'W. Central Africa Standard Time' 'Etc/GMT-1' = 'W. Central Africa Standard Time' 'Asia/Amman' = 'Jordan Standard Time' 'Europe/Bucharest' = 'GTB Standard Time' 'Asia/Nicosia' = 'GTB Standard Time' 'Asia/Famagusta' = 'GTB Standard Time' 'Europe/Athens' = 'GTB Standard Time' 'Asia/Beirut' = 'Middle East Standard Time' 'Africa/Cairo' = 'Egypt Standard Time' 'Europe/Chisinau' = 'E. Europe Standard Time' 'Asia/Damascus' = 'Syria Standard Time' 'Asia/Hebron' = 'West Bank Standard Time' 'Asia/Gaza' = 'West Bank 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/Blantyre' = 'South Africa Standard Time' 'Africa/Maputo' = 'South Africa Standard Time' 'Africa/Kigali' = 'South Africa Standard Time' 'Africa/Mbabane' = '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/Kyiv' = '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/Uzhgorod' = 'FLE Standard Time' 'Europe/Zaporozhye' = 'FLE Standard Time' 'Asia/Jerusalem' = 'Israel Standard Time' 'Europe/Kaliningrad' = 'Kaliningrad Standard Time' 'Africa/Khartoum' = 'Sudan Standard Time' 'Africa/Tripoli' = 'Libya Standard Time' 'Africa/Windhoek' = 'Namibia Standard Time' 'Asia/Baghdad' = 'Arabic Standard Time' 'Europe/Istanbul' = 'Turkey Standard Time' 'Asia/Riyadh' = 'Arab Standard Time' 'Asia/Bahrain' = 'Arab Standard Time' 'Asia/Kuwait' = 'Arab Standard Time' 'Asia/Qatar' = 'Arab Standard Time' 'Asia/Aden' = 'Arab Standard Time' 'Europe/Minsk' = 'Belarus Standard Time' 'Europe/Moscow' = 'Russian Standard Time' 'Europe/Kirov' = 'Russian Standard Time' 'Europe/Simferopol' = 'Russian 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' 'Indian/Comoro' = 'E. Africa Standard Time' 'Indian/Antananarivo' = '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/Dubai' = 'Arabian Standard Time' 'Asia/Muscat' = 'Arabian Standard Time' 'Etc/GMT-4' = 'Arabian Standard Time' 'Europe/Astrakhan' = 'Astrakhan Standard Time' 'Europe/Ulyanovsk' = 'Astrakhan Standard Time' 'Asia/Baku' = 'Azerbaijan Standard Time' 'Europe/Samara' = 'Russia Time Zone 3' 'Indian/Mauritius' = 'Mauritius Standard Time' 'Indian/Reunion' = 'Mauritius Standard Time' 'Indian/Mahe' = 'Mauritius Standard Time' 'Europe/Saratov' = 'Saratov Standard Time' 'Asia/Tbilisi' = 'Georgian Standard Time' 'Europe/Volgograd' = 'Volgograd Standard Time' 'Asia/Yerevan' = 'Caucasus Standard Time' 'Asia/Kabul' = 'Afghanistan 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' 'Asia/Atyrau' = '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/Samarkand' = 'West Asia Standard Time' 'Etc/GMT-5' = 'West Asia Standard Time' 'Asia/Yekaterinburg' = 'Ekaterinburg Standard Time' 'Asia/Karachi' = 'Pakistan Standard Time' 'Asia/Qyzylorda' = 'Qyzylorda Standard Time' 'Asia/Calcutta' = 'India Standard Time' 'Asia/Kolkata' = 'India Standard Time' 'Asia/Colombo' = 'Sri Lanka Standard Time' 'Asia/Katmandu' = 'Nepal Standard Time' 'Asia/Kathmandu' = 'Nepal Standard Time' 'Asia/Almaty' = 'Central Asia Standard Time' 'Antarctica/Vostok' = 'Central Asia Standard Time' 'Asia/Urumqi' = 'Central Asia Standard Time' 'Indian/Chagos' = 'Central Asia Standard Time' 'Asia/Bishkek' = 'Central Asia Standard Time' 'Asia/Qostanay' = 'Central Asia Standard Time' 'Etc/GMT-6' = 'Central Asia Standard Time' 'Asia/Dhaka' = 'Bangladesh Standard Time' 'Asia/Thimphu' = 'Bangladesh Standard Time' 'Asia/Omsk' = 'Omsk Standard Time' 'Asia/Rangoon' = 'Myanmar Standard Time' 'Asia/Yangon' = 'Myanmar Standard Time' 'Indian/Cocos' = '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/Saigon' = 'SE Asia Standard Time' 'Etc/GMT-7' = 'SE Asia Standard Time' 'Asia/Barnaul' = 'Altai Standard Time' 'Asia/Hovd' = 'W. Mongolia Standard Time' 'Asia/Krasnoyarsk' = 'North Asia Standard Time' 'Asia/Novokuznetsk' = 'North Asia Standard Time' 'Asia/Novosibirsk' = 'N. Central Asia Standard Time' 'Asia/Tomsk' = 'Tomsk Standard Time' 'Asia/Shanghai' = 'China Standard Time' 'Asia/Hong_Kong' = 'China Standard Time' 'Asia/Macau' = 'China Standard Time' 'Asia/Irkutsk' = 'North Asia East Standard Time' 'Asia/Singapore' = 'Singapore Standard Time' 'Antarctica/Casey' = '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' 'Etc/GMT-8' = 'Singapore Standard Time' 'Australia/Perth' = 'W. Australia Standard Time' 'Asia/Taipei' = 'Taipei Standard Time' 'Asia/Ulaanbaatar' = 'Ulaanbaatar Standard Time' 'Asia/Choibalsan' = 'Ulaanbaatar Standard Time' 'Australia/Eucla' = 'Aus Central W. Standard Time' 'Asia/Chita' = 'Transbaikal Standard Time' 'Asia/Tokyo' = 'Tokyo Standard Time' 'Asia/Jayapura' = 'Tokyo Standard Time' 'Pacific/Palau' = 'Tokyo Standard Time' 'Asia/Dili' = 'Tokyo Standard Time' 'Etc/GMT-9' = 'Tokyo Standard Time' 'Asia/Pyongyang' = 'North Korea Standard Time' 'Asia/Seoul' = 'Korea Standard Time' 'Asia/Yakutsk' = 'Yakutsk Standard Time' 'Asia/Khandyga' = 'Yakutsk Standard Time' 'Australia/Adelaide' = 'Cen. Australia Standard Time' 'Australia/Broken_Hill' = 'Cen. Australia Standard Time' 'Australia/Darwin' = 'AUS Central Standard Time' 'Australia/Brisbane' = 'E. Australia Standard Time' 'Australia/Lindeman' = 'E. Australia 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/Chuuk' = 'West Pacific Standard Time' 'Pacific/Guam' = 'West Pacific Standard Time' 'Pacific/Saipan' = 'West Pacific Standard Time' 'Etc/GMT-10' = 'West Pacific Standard Time' 'Australia/Hobart' = 'Tasmania Standard Time' 'Australia/Currie' = 'Tasmania Standard Time' 'Asia/Vladivostok' = 'Vladivostok Standard Time' 'Asia/Ust-Nera' = 'Vladivostok Standard Time' 'Australia/Lord_Howe' = 'Lord Howe Standard Time' 'Pacific/Bougainville' = 'Bougainville Standard Time' 'Asia/Srednekolymsk' = 'Russia Time Zone 10' 'Asia/Magadan' = 'Magadan Standard Time' 'Pacific/Norfolk' = 'Norfolk Standard Time' 'Asia/Sakhalin' = 'Sakhalin Standard Time' 'Pacific/Guadalcanal' = 'Central Pacific Standard Time' 'Antarctica/Macquarie' = 'Central Pacific Standard Time' 'Pacific/Ponape' = 'Central Pacific Standard Time' 'Pacific/Pohnpei' = 'Central Pacific Standard Time' 'Pacific/Kosrae' = 'Central Pacific Standard Time' 'Pacific/Noumea' = 'Central Pacific Standard Time' 'Pacific/Efate' = 'Central Pacific Standard Time' 'Etc/GMT-11' = 'Central Pacific Standard Time' 'Asia/Kamchatka' = 'Russia Time Zone 11' 'Asia/Anadyr' = 'Russia Time Zone 11' 'Pacific/Auckland' = 'New Zealand Standard Time' 'Antarctica/McMurdo' = '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' 'Pacific/Fiji' = 'Fiji Standard Time' 'Pacific/Chatham' = 'Chatham Islands Standard Time' 'Etc/GMT-13' = 'UTC+13' 'Pacific/Enderbury' = 'UTC+13' 'Pacific/Fakaofo' = 'UTC+13' 'Pacific/Tongatapu' = 'Tonga Standard Time' 'Pacific/Apia' = 'Samoa Standard Time' 'Pacific/Kiritimati' = 'Line Islands Standard Time' 'Etc/GMT-14' = 'Line Islands Standard Time' 'US/Alaska' = 'Alaskan Standard Time' 'US/Arizona' = 'US Mountain Standard Time' 'US/Central' = 'Central Standard Time' 'US/Eastern' = 'Eastern Standard Time' 'US/Hawaii' = 'Hawaiian Standard Time' 'US/Mountain' = 'Mountain Standard Time' 'US/Pacific' = 'Pacific Standard Time' } $Script:WindowsToIANA = @{ 'Dateline Standard Time' = 'Etc/GMT+12' 'UTC-11' = 'Etc/GMT+11' 'Aleutian Standard Time' = 'America/Adak' 'Hawaiian Standard Time' = 'Pacific/Honolulu' 'Marquesas Standard Time' = 'Pacific/Marquesas' 'Alaskan Standard Time' = 'America/Anchorage' 'UTC-09' = 'Etc/GMT+9' 'Pacific Standard Time (Mexico)' = 'America/Tijuana' 'UTC-08' = 'Etc/GMT+8' 'Pacific Standard Time' = 'America/Los_Angeles' 'US Mountain Standard Time' = 'America/Phoenix' 'Mountain Standard Time (Mexico)' = 'America/Mazatlan' 'Mountain Standard Time' = 'America/Denver' 'Central America Standard Time' = 'America/Guatemala' 'Central Standard Time' = 'America/Chicago' 'Easter Island Standard Time' = 'Pacific/Easter' 'Central Standard Time (Mexico)' = 'America/Mexico_City' 'Canada Central Standard Time' = 'America/Regina' 'SA Pacific Standard Time' = 'America/Bogota' 'Eastern Standard Time (Mexico)' = 'America/Cancun' 'Eastern Standard Time' = 'America/New_York' 'Haiti Standard Time' = 'America/Port-au-Prince' 'Cuba Standard Time' = 'America/Havana' 'US Eastern Standard Time' = 'America/Indianapolis' 'Turks And Caicos Standard Time' = 'America/Grand_Turk' 'Paraguay Standard Time' = 'America/Asuncion' 'Atlantic Standard Time' = 'America/Halifax' 'Venezuela Standard Time' = 'America/Caracas' 'Central Brazilian Standard Time' = 'America/Cuiaba' 'SA Western Standard Time' = 'America/La_Paz' 'Pacific SA Standard Time' = 'America/Santiago' 'Newfoundland Standard Time' = 'America/St_Johns' 'Tocantins Standard Time' = 'America/Araguaina' 'E. South America Standard Time' = 'America/Sao_Paulo' 'SA Eastern Standard Time' = 'America/Cayenne' 'Argentina Standard Time' = 'America/Buenos_Aires' 'Greenland Standard Time' = 'America/Nuuk' 'Montevideo Standard Time' = 'America/Montevideo' 'Magallanes Standard Time' = 'America/Punta_Arenas' 'Saint Pierre Standard Time' = 'America/Miquelon' 'Bahia Standard Time' = 'America/Bahia' 'UTC-02' = 'Etc/GMT+2' 'Azores Standard Time' = 'Atlantic/Azores' 'Cape Verde Standard Time' = 'Atlantic/Cape_Verde' 'UTC' = 'Etc/UTC' 'GMT Standard Time' = 'Europe/London' 'Greenwich Standard Time' = 'Atlantic/Reykjavik' 'Sao Tome Standard Time' = 'Africa/Sao_Tome' 'Morocco Standard Time' = 'Africa/Casablanca' 'W. Europe Standard Time' = 'Europe/Berlin' 'Central Europe Standard Time' = 'Europe/Budapest' 'Romance Standard Time' = 'Europe/Paris' 'Central European Standard Time' = 'Europe/Warsaw' 'W. Central Africa Standard Time' = 'Africa/Lagos' 'Jordan Standard Time' = 'Asia/Amman' 'GTB Standard Time' = 'Europe/Bucharest' 'Middle East Standard Time' = 'Asia/Beirut' 'Egypt Standard Time' = 'Africa/Cairo' 'E. Europe Standard Time' = 'Europe/Chisinau' 'Syria Standard Time' = 'Asia/Damascus' 'West Bank Standard Time' = 'Asia/Hebron' 'South Africa Standard Time' = 'Africa/Johannesburg' 'FLE Standard Time' = 'Europe/Kiev' 'Israel Standard Time' = 'Asia/Jerusalem' 'Kaliningrad Standard Time' = 'Europe/Kaliningrad' 'Sudan Standard Time' = 'Africa/Khartoum' 'Libya Standard Time' = 'Africa/Tripoli' 'Namibia Standard Time' = 'Africa/Windhoek' 'Arabic Standard Time' = 'Asia/Baghdad' 'Turkey Standard Time' = 'Europe/Istanbul' 'Arab Standard Time' = 'Asia/Riyadh' 'Belarus Standard Time' = 'Europe/Minsk' 'Russian Standard Time' = 'Europe/Moscow' 'E. Africa Standard Time' = 'Africa/Nairobi' 'Volgograd Standard Time' = 'Europe/Volgograd' 'Iran Standard Time' = 'Asia/Tehran' 'Arabian Standard Time' = 'Asia/Dubai' 'Astrakhan Standard Time' = 'Europe/Astrakhan' 'Azerbaijan Standard Time' = 'Asia/Baku' 'Russia Time Zone 3' = 'Europe/Samara' 'Mauritius Standard Time' = 'Indian/Mauritius' 'Saratov Standard Time' = 'Europe/Saratov' 'Georgian Standard Time' = 'Asia/Tbilisi' 'Caucasus Standard Time' = 'Asia/Yerevan' 'Afghanistan Standard Time' = 'Asia/Kabul' 'West Asia Standard Time' = 'Asia/Tashkent' 'Ekaterinburg Standard Time' = 'Asia/Yekaterinburg' 'Pakistan Standard Time' = 'Asia/Karachi' 'Qyzylorda Standard Time' = 'Asia/Qyzylorda' 'India Standard Time' = 'Asia/Calcutta' 'Sri Lanka Standard Time' = 'Asia/Colombo' 'Nepal Standard Time' = 'Asia/Katmandu' 'Central Asia Standard Time' = 'Asia/Almaty' 'Bangladesh Standard Time' = 'Asia/Dhaka' 'Omsk Standard Time' = 'Asia/Omsk' 'Myanmar Standard Time' = 'Asia/Rangoon' 'SE Asia Standard Time' = 'Asia/Bangkok' 'Altai Standard Time' = 'Asia/Barnaul' 'W. Mongolia Standard Time' = 'Asia/Hovd' 'North Asia Standard Time' = 'Asia/Krasnoyarsk' 'N. Central Asia Standard Time' = 'Asia/Novosibirsk' 'Tomsk Standard Time' = 'Asia/Tomsk' 'China Standard Time' = 'Asia/Shanghai' 'North Asia East Standard Time' = 'Asia/Irkutsk' 'Singapore Standard Time' = 'Asia/Singapore' 'W. Australia Standard Time' = 'Australia/Perth' 'Taipei Standard Time' = 'Asia/Taipei' 'Ulaanbaatar Standard Time' = 'Asia/Ulaanbaatar' 'Aus Central W. Standard Time' = 'Australia/Eucla' 'Transbaikal Standard Time' = 'Asia/Chita' 'Tokyo Standard Time' = 'Asia/Tokyo' 'North Korea Standard Time' = 'Asia/Pyongyang' 'Korea Standard Time' = 'Asia/Seoul' 'Yakutsk Standard Time' = 'Asia/Yakutsk' 'Cen. Australia Standard Time' = 'Australia/Adelaide' 'AUS Central Standard Time' = 'Australia/Darwin' 'E. Australia Standard Time' = 'Australia/Brisbane' 'AUS Eastern Standard Time' = 'Australia/Sydney' 'West Pacific Standard Time' = 'Pacific/Port_Moresby' 'Tasmania Standard Time' = 'Australia/Hobart' 'Vladivostok Standard Time' = 'Asia/Vladivostok' 'Lord Howe Standard Time' = 'Australia/Lord_Howe' 'Bougainville Standard Time' = 'Pacific/Bougainville' 'Russia Time Zone 10' = 'Asia/Srednekolymsk' 'Magadan Standard Time' = 'Asia/Magadan' 'Norfolk Standard Time' = 'Pacific/Norfolk' 'Sakhalin Standard Time' = 'Asia/Sakhalin' 'Central Pacific Standard Time' = 'Pacific/Guadalcanal' 'Russia Time Zone 11' = 'Asia/Kamchatka' 'New Zealand Standard Time' = 'Pacific/Auckland' 'UTC+12' = 'Etc/GMT-12' 'Fiji Standard Time' = 'Pacific/Fiji' 'Chatham Islands Standard Time' = 'Pacific/Chatham' 'UTC+13' = 'Etc/GMT-13' 'Tonga Standard Time' = 'Pacific/Tongatapu' 'Samoa Standard Time' = 'Pacific/Apia' 'Line Islands Standard Time' = 'Pacific/Kiritimati' } function Find-LMTimeZoneInfo { [CmdletBinding()] param ( [Parameter(Mandatory)] [String]$Timezone ) try { return [System.TimeZoneInfo]::FindSystemTimeZoneById($Timezone) } catch {} if ($Script:IANAtoWindows.ContainsKey($Timezone)) { try { return [System.TimeZoneInfo]::FindSystemTimeZoneById($Script:IANAtoWindows[$Timezone]) } catch {} } if ($Script:WindowsToIANA.ContainsKey($Timezone)) { try { return [System.TimeZoneInfo]::FindSystemTimeZoneById($Script:WindowsToIANA[$Timezone]) } catch {} } $match = [System.TimeZoneInfo]::GetSystemTimeZones() | Where-Object { $_.StandardName -eq $Timezone -or $_.DaylightName -eq $Timezone } | Select-Object -First 1 if ($match) { return $match } throw "Invalid timezone '$Timezone'. Please provide a valid IANA timezone (e.g. America/New_York) or Windows timezone (e.g. Eastern Standard Time)." } function Resolve-LMTimezoneToIANAId { [CmdletBinding()] param ( [Parameter(Mandatory)] [String]$Timezone ) if ($Script:IANAtoWindows.ContainsKey($Timezone)) { return $Timezone } if ($Script:WindowsToIANA.ContainsKey($Timezone)) { return $Script:WindowsToIANA[$Timezone] } try { $tzInfo = Find-LMTimeZoneInfo -Timezone $Timezone if ($Script:IANAtoWindows.ContainsKey($tzInfo.Id)) { return $tzInfo.Id } if ($Script:WindowsToIANA.ContainsKey($tzInfo.Id)) { return $Script:WindowsToIANA[$tzInfo.Id] } if ($tzInfo.Id -match '/') { return $tzInfo.Id } $ianaId = $null if ([System.TimeZoneInfo]::TryConvertWindowsIdToIanaId($tzInfo.Id, [ref]$ianaId)) { return $ianaId } } catch {} return $Timezone } function Test-LMTimezoneId { [CmdletBinding()] param ( [AllowNull()] [AllowEmptyString()] [String]$Timezone ) if ([String]::IsNullOrWhiteSpace($Timezone)) { return $true } try { Find-LMTimeZoneInfo -Timezone $Timezone | Out-Null return $true } catch { throw "Invalid timezone '$Timezone'. Please provide a valid IANA timezone (e.g. America/New_York) or Windows timezone (e.g. Eastern Standard Time)." } } function Resolve-LMSDTTimezone { [CmdletBinding()] param ( [AllowNull()] [AllowEmptyString()] [String]$Timezone ) if (![String]::IsNullOrWhiteSpace($Timezone)) { Test-LMTimezoneId -Timezone $Timezone | Out-Null return (Resolve-LMTimezoneToIANAId -Timezone $Timezone) } if ($Script:LMAuth.PSObject.Properties.Name -contains 'PortalTimezone' -and -not [String]::IsNullOrWhiteSpace($Script:LMAuth.PortalTimezone)) { return $Script:LMAuth.PortalTimezone } try { $PortalInfo = Get-LMPortalInfo -ErrorAction Stop $PortalTimezone = @( $PortalInfo.timezone, $PortalInfo.timeZone, $PortalInfo.portalTimezone, $PortalInfo.portalTimeZone ) | Where-Object { -not [String]::IsNullOrWhiteSpace($_) } | Select-Object -First 1 if (-not [String]::IsNullOrWhiteSpace($PortalTimezone)) { if ($Script:LMAuth.PSObject.Properties.Name -contains 'PortalTimezone') { $Script:LMAuth.PortalTimezone = $PortalTimezone } else { Add-Member -InputObject $Script:LMAuth -MemberType NoteProperty -Name PortalTimezone -Value $PortalTimezone -Force } return $PortalTimezone } } catch {} throw "Unable to resolve portal timezone automatically. Please specify -Timezone explicitly (for example, America/New_York)." } function ConvertTo-LMSDTEpochMillis { [CmdletBinding()] param ( [Parameter(Mandatory)] [Datetime]$DateTime, [Parameter(Mandatory)] [String]$Timezone ) try { $TimeZoneInfo = Find-LMTimeZoneInfo -Timezone $Timezone } catch { throw "Unable to resolve timezone '$Timezone'. Please provide a valid IANA timezone (e.g. America/New_York) or Windows timezone (e.g. Eastern Standard Time)." } # Treat the provided DateTime as a wall-clock time in the selected timezone. $UnspecifiedDateTime = [Datetime]::SpecifyKind($DateTime, [System.DateTimeKind]::Unspecified) if ($TimeZoneInfo.IsInvalidTime($UnspecifiedDateTime)) { throw "The date/time '$($DateTime.ToString("yyyy-MM-dd HH:mm:ss"))' is invalid in timezone '$Timezone' due to a DST transition. Please choose a valid local time." } $Offset = $TimeZoneInfo.GetUtcOffset($UnspecifiedDateTime) $DateTimeOffset = [DateTimeOffset]::new($UnspecifiedDateTime, $Offset) return $DateTimeOffset.ToUnixTimeMilliseconds() } |