public static void Main()
DateTime dt = DateTime.Now;
TimeZoneInfo centralTimeZone, easternTimeZone;
dt = new DateTime(2017, 1, 20, 10, 43, 23);
Write(dt, TimeZoneInfo.Local.Id, "Central Standard Time");
centralTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
easternTimeZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
dt = TimeZoneInfo.ConvertTime(dt, centralTimeZone);
Write(dt, "Central Standard Time", "US Mountain Standard Time");
dt = new DateTime(2017, 7, 20, 10, 43, 23);
Write(dt, TimeZoneInfo.Local.Id, "Central Standard Time");
centralTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
easternTimeZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
dt = TimeZoneInfo.ConvertTime(dt, centralTimeZone);
Write(dt, "Central Standard Time", "US Mountain Standard Time");
static void Write(DateTime datetime, string sourceTimeZoneId, string destinationTimeZoneId)
TimeZoneInfo sourceTimeZone = TimeZoneInfo.FindSystemTimeZoneById(sourceTimeZoneId);
TimeZoneInfo destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(destinationTimeZoneId);
DateTime dt = TimeZoneInfo.ConvertTime(datetime, sourceTimeZone, destinationTimeZone);
Console.WriteLine("Source TZI");
Console.WriteLine(" - Id : " + sourceTimeZone.Id);
Console.WriteLine(" - DisplayName : " + sourceTimeZone.DisplayName);
Console.WriteLine(" - StandardName : " + sourceTimeZone.StandardName);
Console.WriteLine(" - DaylightName : " + sourceTimeZone.DaylightName);
Console.WriteLine(" - BaseUtcOffset : " + sourceTimeZone.BaseUtcOffset);
Console.WriteLine(" - SupportsDST : " + sourceTimeZone.SupportsDaylightSavingTime);
Console.WriteLine("Destination");
Console.WriteLine(" - Id : " + destinationTimeZone.Id);
Console.WriteLine(" - DisplayName : " + destinationTimeZone.DisplayName);
Console.WriteLine(" - StandardName : " + destinationTimeZone.StandardName);
Console.WriteLine(" - DaylightName : " + destinationTimeZone.DaylightName);
Console.WriteLine(" - BaseUtcOffset : " + destinationTimeZone.BaseUtcOffset);
Console.WriteLine(" - SupportsDST : " + destinationTimeZone.SupportsDaylightSavingTime);
Console.WriteLine("DateTime");
Console.WriteLine(" - Starting Value : " + datetime.ToString());
Console.WriteLine(" - Starting Kind : " + datetime.Kind.ToString());
Console.WriteLine(" - Converted : " + dt.ToString());
Console.WriteLine(" - Kind : " + dt.Kind.ToString());
Console.WriteLine(" - IsAmbiguousTime : " + destinationTimeZone.IsAmbiguousTime(dt));
Console.WriteLine(" - IsDST : " + destinationTimeZone.IsDaylightSavingTime(dt));
Console.WriteLine(" - IsInvalidTime : " + destinationTimeZone.IsInvalidTime(dt));