using System.Collections.Generic;
public static void Main()
DateTime date = new DateTime(2022,09,26,23,00,00);
if ((date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday))
DateTime lastUpdate = date.AddHours(-8);
Console.WriteLine(lastUpdate);
if(date.DayOfWeek == DayOfWeek.Monday && (lastUpdate.Hour < 8 || lastUpdate.Hour > 18)){
date = date.AddHours(-72);
lastUpdate = new DateTime(date.Year, date.Month, date.Day, 18,00,00);
int remainHour = 8 - lastUpdate.Hour;
lastUpdate = lastUpdate.AddHours(remainHour * -1);
}else if(lastUpdate.Hour >= 18){
lastUpdate = lastUpdate.AddHours(-8);
List<DateTime> allHolidays = GetHoliday(lastUpdate.Day, lastUpdate.Month, lastUpdate.Year);
foreach(DateTime dateHoliday in allHolidays.OrderByDescending(h => h.Day)){
if(dateHoliday.Day == lastUpdate.Day){
lastUpdate = lastUpdate.AddHours(-24);
Console.WriteLine(lastUpdate);
public static List<DateTime> GetHoliday(int day, int month, int year){
return new List<DateTime>() {
new DateTime(2022, 09, 23),
new DateTime(2022, 09, 21),
new DateTime(2022, 09, 20),