public static void Main()
DateTime preDstTenderAtUtcTimeStamp = DateTime.Parse("3/13/2021 14:00:00");
DateTime postDstTenderAtUtcTimeStamp = DateTime.Parse("3/15/2021 14:00:00");
TimeSpan openAt = TimeSpan.FromMilliseconds(28800000);
TimeSpan closeAt = TimeSpan.FromMilliseconds(93600000);
TimeZoneInfo boiseTzInfo = TZConvert.GetTimeZoneInfo("America/Boise");
TimeZoneInfo phoenizTzInfo = TZConvert.GetTimeZoneInfo("America/Phoenix");
Console.WriteLine("Pre Daylight Savings Time");
Console.WriteLine("Boise");
DateTime boiseOpenTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, boiseTzInfo).Date;
DateTime boiseCloseTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, boiseTzInfo).Date;
boiseOpenTime = boiseOpenTime.Date.Add(openAt);
boiseCloseTime = boiseCloseTime.Date.Add(closeAt);
DateTime boiseTenderTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, boiseTzInfo);
Console.WriteLine("Boise opens at: {0}", boiseOpenTime);
Console.WriteLine("Boise closes at: {0}", boiseCloseTime);
Console.WriteLine("Boise tenders at: {0}", boiseTenderTime);
if(boiseTenderTime >= boiseOpenTime && boiseTenderTime <= boiseCloseTime)
Console.WriteLine("Within Boise business hours");
Console.WriteLine("Outside of Boise business hours");
Console.WriteLine("Phoenix");
DateTime phoenixOpenTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, phoenizTzInfo).Date;
DateTime phoenixCloseTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, phoenizTzInfo).Date;
phoenixOpenTime = phoenixOpenTime.Date.Add(openAt);
phoenixCloseTime = phoenixCloseTime.Date.Add(closeAt);
DateTime phoenixTenderTime = TimeZoneInfo.ConvertTimeFromUtc(preDstTenderAtUtcTimeStamp, phoenizTzInfo);
Console.WriteLine("Phoenix opens at: {0}", phoenixOpenTime);
Console.WriteLine("Phoenix closes at: {0}", phoenixCloseTime);
Console.WriteLine("Phoenix tenders at: {0}", phoenixTenderTime);
if(phoenixTenderTime >= phoenixOpenTime && phoenixTenderTime <= phoenixCloseTime)
Console.WriteLine("Within Phoenix business hours");
Console.WriteLine("Outside of Phoenix business hours");
Console.WriteLine("Post Daylight Savings Time");
Console.WriteLine("Boise");
boiseOpenTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, boiseTzInfo).Date;
boiseCloseTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, boiseTzInfo).Date;
boiseOpenTime = boiseOpenTime.Date.Add(openAt);
boiseCloseTime = boiseCloseTime.Date.Add(closeAt);
boiseTenderTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, boiseTzInfo);
Console.WriteLine("Boise opens at: {0}", boiseOpenTime);
Console.WriteLine("Boise closes at: {0}", boiseCloseTime);
Console.WriteLine("Boise tenders at: {0}", boiseTenderTime);
if(boiseTenderTime >= boiseOpenTime && boiseTenderTime <= boiseCloseTime)
Console.WriteLine("Within Boise business hours");
Console.WriteLine("Outside of Boise business hours");
Console.WriteLine("Phoenix");
phoenixOpenTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, phoenizTzInfo).Date;
phoenixCloseTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, phoenizTzInfo).Date;
phoenixOpenTime = phoenixOpenTime.Date.Add(openAt);
phoenixCloseTime = phoenixCloseTime.Date.Add(closeAt);
phoenixTenderTime = TimeZoneInfo.ConvertTimeFromUtc(postDstTenderAtUtcTimeStamp, phoenizTzInfo);
Console.WriteLine("Phoenix opens at: {0}", phoenixOpenTime);
Console.WriteLine("Phoenix closes at: {0}", phoenixCloseTime);
Console.WriteLine("Phoenix tenders at: {0}", phoenixTenderTime);
if(phoenixTenderTime >= phoenixOpenTime && phoenixTenderTime <= phoenixCloseTime)
Console.WriteLine("Within Phoenix business hours");
Console.WriteLine("Outside of Phoenix business hours");