public static void Main()
var utcDateTime = new DateTime(2018,12,25,09,00,00,DateTimeKind.Utc);
Console.WriteLine("Time difference when DST is Off");
Console.WriteLine("Time in UTC: "+utcDateTime.ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Newfoundland: "+ConvertToRestaurantTime(utcDateTime, "Newfoundland Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Atlantic: "+ConvertToRestaurantTime(utcDateTime, "Atlantic Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Eastern: "+ConvertToRestaurantTime(utcDateTime, "Eastern Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Central: "+ConvertToRestaurantTime(utcDateTime, "Central Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Mountain: "+ConvertToRestaurantTime(utcDateTime, "Mountain Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Saskatchewan: "+ConvertToRestaurantTime(utcDateTime, "Canada Central Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Pacific: "+ConvertToRestaurantTime(utcDateTime, "Pacific Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time difference when DST is on");
utcDateTime = new DateTime(2018,09,25,09,00,00,DateTimeKind.Utc);
Console.WriteLine("Time in UTC: "+utcDateTime.ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Newfoundland: "+ConvertToRestaurantTime(utcDateTime, "Newfoundland Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Atlantic: "+ConvertToRestaurantTime(utcDateTime, "Atlantic Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Eastern: "+ConvertToRestaurantTime(utcDateTime, "Eastern Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Central: "+ConvertToRestaurantTime(utcDateTime, "Central Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Mountain: "+ConvertToRestaurantTime(utcDateTime, "Mountain Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Saskatchewan: "+ConvertToRestaurantTime(utcDateTime, "Canada Central Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
Console.WriteLine("Time in Pacific: "+ConvertToRestaurantTime(utcDateTime, "Pacific Standard Time").ToString("yyyy-MM-dd hh:mm:ss tt"));
public static DateTime ConvertToRestaurantTime(DateTime currentTime, string timeZone)
DateTime changedKind = DateTime.SpecifyKind(currentTime, DateTimeKind.Unspecified);
TimeZoneInfo restaurantZone = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
currentTime = TimeZoneInfo.ConvertTime(changedKind, TimeZoneInfo.Local, restaurantZone);