private bool CrossBoundary(QuestInterval interval) { return(interval switch { QuestInterval.Other => false, QuestInterval.Daily => CrossBoundary(LastMorning), QuestInterval.Weekly => CrossBoundary(LastMonday.AddHours(5)), QuestInterval.Monthly => CrossBoundary(new DateTime(_now.Year, _now.Month, 1, 5, 0, 0)), QuestInterval.Quarterly => CrossBoundary(QuarterlyBoundary.AddHours(5)), QuestInterval.Yearly1 => CrossBoundary(new DateTime(_now.Year, 1, 1, 5, 0, 0)), QuestInterval.Yearly2 => CrossBoundary(new DateTime(_now.Year, 2, 1, 5, 0, 0)), QuestInterval.Yearly3 => CrossBoundary(new DateTime(_now.Year, 3, 1, 5, 0, 0)), QuestInterval.Yearly5 => CrossBoundary(new DateTime(_now.Year, 5, 1, 5, 0, 0)), QuestInterval.Yearly8 => CrossBoundary(new DateTime(_now.Year, 8, 1, 5, 0, 0)), QuestInterval.Yearly9 => CrossBoundary(new DateTime(_now.Year, 9, 1, 5, 0, 0)), QuestInterval.Yearly10 => CrossBoundary(new DateTime(_now.Year, 10, 1, 5, 0, 0)), QuestInterval.Yearly11 => CrossBoundary(new DateTime(_now.Year, 11, 1, 5, 0, 0)), _ => false });
static DateTimeUtil() { var now = DateTime.Now.Date; Today = now; FirstDayOfTheMonth = now.AddDays(now.Day * -1 + 1); LastDayOfTheMonth = FirstDayOfTheMonth.AddMonths(1).AddDays(-1); FirstDayOfLastMonth = FirstDayOfTheMonth.AddMonths(-1); LastDayOfLastMonth = FirstDayOfTheMonth.AddDays(-1); int i = now.DayOfWeek - DayOfWeek.Monday == -1 ? 6 : -1; TimeSpan ts = new TimeSpan(i, 0, 0, 0); Monday = now.Subtract(ts).Date; Tuesday = Monday.AddDays(1); Wednesday = Monday.AddDays(2); Thursday = Monday.AddDays(3); Friday = Monday.AddDays(4); Saturday = Monday.AddDays(5); Sunday = Monday.AddDays(6); LastMonday = Monday.AddDays(-7); LastTuesday = LastMonday.AddDays(1); LastWednesday = LastMonday.AddDays(2); LastThursday = LastMonday.AddDays(3); LastFriday = LastMonday.AddDays(4); LastSaturday = LastMonday.AddDays(5); LastSunday = LastMonday.AddDays(6); NextMonday = Sunday.AddDays(1); NextTuesday = Monday.AddDays(1); NextWednesday = Monday.AddDays(2); NextThursday = Monday.AddDays(3); NextFriday = Monday.AddDays(4); NextSaturday = Monday.AddDays(5); NextSunday = Monday.AddDays(6); RunIdOfToday = now.ToString("yyyy-MM-dd"); RunIdOfMonthly = FirstDayOfTheMonth.ToString("yyyy-MM-dd"); RunIdOfMonday = Monday.ToString("yyyy-MM-dd"); }