public static void Main()
int availableChatStartHour = 13;
int availableChatDuration = 12;
string[] availableDaysForChat = "monday,tuesday,wednesday,thursday,friday".ToUpper().Split(',');
var now = DateTime.UtcNow;
var startTime = new DateTime(now.Year, now.Month, now.Day, availableChatStartHour, 0, 0, DateTimeKind.Utc);
var endTime = startTime.AddHours(availableChatDuration);
var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var cstTime = TimeZoneInfo.ConvertTimeFromUtc(now, cstZone);
var isDstActive = cstZone.IsDaylightSavingTime(cstTime);
startTime = startTime.AddHours(-1);
endTime = endTime.AddHours(-1);
var isDayAvilable = availableDaysForChat.Contains(cstTime.DayOfWeek.ToString().ToUpper());
var isAfterStartTime = now > startTime;
var isBeforeEndTime = now < endTime;
Console.WriteLine("NOW: "+ now);
Console.WriteLine("START: "+ startTime);
Console.WriteLine("END: "+ endTime);
Console.WriteLine("-------------------------------------");
Console.WriteLine("Day Available: "+isDayAvilable);
Console.WriteLine("Is After Start Time: "+ isAfterStartTime);
Console.WriteLine("Is Before End Time: "+ isBeforeEndTime);
Console.WriteLine("-------------------------------------");
Console.WriteLine("FINAL RESULT: "+ (isDayAvilable && isAfterStartTime && isBeforeEndTime));