using System.Collections.Generic;
public static void Main()
var timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (var handleTimeZoneAbbreviation in new [] { false, true })
var abbreviations = handleTimeZoneAbbreviation ?
new Dictionary<string, string>() { { "est", "America/Atikokan" } } :
new Dictionary<string, string>();
var timeZone = timeZones.FirstOrDefault(tz => tz.Id.Equals(id, StringComparison.OrdinalIgnoreCase) || tz.StandardName.Equals(id, StringComparison.OrdinalIgnoreCase));
Console.WriteLine("Found time zone: {0}", timeZone.Id);
if (abbreviations.TryGetValue(id.ToLower(), out var timeZoneId))
Console.WriteLine("Found time zone {0} with abbreviations handling equal {1}", timeZoneId, handleTimeZoneAbbreviation);
Console.WriteLine("Time zone not found {0} with abbreviations handling equal {1}", id, handleTimeZoneAbbreviation);