public static void Main()
DateTime specifiedTime = new DateTime(2017, 04, 02, 18, 51, 00);
DateTime now = DateTime.Now;
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time");
if (zone.IsDaylightSavingTime(specifiedTime))
timeName = zone.DaylightName;
timeName = zone.StandardName;
DateTime specifiedTimeAsUtc = TimeZoneInfo.ConvertTime(specifiedTime, zone, TimeZoneInfo.Local);
Console.WriteLine("Specified date/time converted to UTC for comparison:\r\n{0} {1} = {2} UTC.", specifiedTime, timeName, specifiedTimeAsUtc);
Console.Write("Specified time in UTC compared to current Date/Time in UTC:\r\n");
if (specifiedTimeAsUtc < now)
Console.Write("{0} < {1}\r\n", specifiedTimeAsUtc, now);
else if (specifiedTimeAsUtc == now)
Console.Write("{0} = {1}\r\n", specifiedTimeAsUtc, now);
Console.Write("{0} > {1}\r\n", specifiedTimeAsUtc, now);
catch (TimeZoneNotFoundException tznfe)
Console.WriteLine(tznfe.Message);
catch (InvalidTimeZoneException itze)
Console.WriteLine(itze.Message);
DisplayAllValidTimeZones();
public static void DisplayAllValidTimeZones()
Console.WriteLine("\r\nALL VALID TIMEZONES FROM SYSTEM REGISTRY (with base UTC offset)\r\n");
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
Console.WriteLine("{0}, {1}", z.Id, z.BaseUtcOffset);