public void Test05_IsHolidayFixedWeekdayInWeekdays() { var dayCounter = new DayCounter(); var holiday = new HolidayFixedWeekday { Id = 0, Name = "Queen's Birthday", Type = (int)HolidayTypeEn.FixedWeekday, Month = 6, Week = 2, DayOfWeek = (int)DayOfWeek.Monday }; var frDt = new DateTime(2015, 1, 1); var toDt = new DateTime(2020, 12, 31); DateTime actualDate; var result = dayCounter.IsHolidayFixedWeekdayInWeekdays(frDt, toDt, 2020, holiday, out actualDate); Assert.IsTrue(result); Assert.IsTrue(actualDate.Year == 2020); Assert.IsTrue(actualDate.Month == 6); Assert.IsTrue(actualDate.Day == 8); toDt = new DateTime(2020, 6, 1); result = dayCounter.IsHolidayFixedWeekdayInWeekdays(frDt, toDt, 2020, holiday, out actualDate); Assert.IsFalse(result); frDt = new DateTime(2020, 7, 1); toDt = new DateTime(2020, 12, 31); result = dayCounter.IsHolidayFixedWeekdayInWeekdays(frDt, toDt, 2020, holiday, out actualDate); Assert.IsFalse(result); }
public void Test04_GetHolidayFixedWeekday() { var dayCounter = new DayCounter(); var holiday = new HolidayFixedWeekday { Id = 0, Name = "Queen's Birthday", Type = (int)HolidayTypeEn.FixedWeekday, Month = 6, Week = 2, DayOfWeek = (int)DayOfWeek.Monday }; var dt = dayCounter.GetHolidayFixedWeekday(2020, holiday); Assert.IsTrue(dt.Year == 2020); Assert.IsTrue(dt.Month == 6); Assert.IsTrue(dt.Day == 8); Assert.IsTrue(dt.DayOfWeek == DayOfWeek.Monday); var dt2 = dayCounter.GetHolidayFixedWeekday(2019, holiday); Assert.IsTrue(dt2.Year == 2019); Assert.IsTrue(dt2.Month == 6); Assert.IsTrue(dt2.Day == 10); Assert.IsTrue(dt2.DayOfWeek == DayOfWeek.Monday); var dt3 = dayCounter.GetHolidayFixedWeekday(2018, holiday); Assert.IsTrue(dt3.Year == 2018); Assert.IsTrue(dt3.Month == 6); Assert.IsTrue(dt3.Day == 11); Assert.IsTrue(dt3.DayOfWeek == DayOfWeek.Monday); var dt4 = dayCounter.GetHolidayFixedWeekday(2017, holiday); Assert.IsTrue(dt4.Year == 2017); Assert.IsTrue(dt4.Month == 6); Assert.IsTrue(dt4.Day == 12); Assert.IsTrue(dt4.DayOfWeek == DayOfWeek.Monday); var dt5 = dayCounter.GetHolidayFixedWeekday(2016, holiday); Assert.IsTrue(dt5.Year == 2016); Assert.IsTrue(dt5.Month == 6); Assert.IsTrue(dt5.Day == 13); Assert.IsTrue(dt5.DayOfWeek == DayOfWeek.Monday); var dt6 = dayCounter.GetHolidayFixedWeekday(2015, holiday); Assert.IsTrue(dt6.Year == 2015); Assert.IsTrue(dt6.Month == 6); Assert.IsTrue(dt6.Day == 8); Assert.IsTrue(dt6.DayOfWeek == DayOfWeek.Monday); }
public DateTime GetHolidayFixedWeekday(int year, HolidayFixedWeekday holiday) { var dt = new DateTime(year, holiday.Month, 1); int additionalDays = holiday.DayOfWeek - (int)dt.DayOfWeek; if (additionalDays < 0) { additionalDays += 7; } dt = dt.AddDays(additionalDays); int nthWeek = 1; while (nthWeek < holiday.Week) { dt = dt.AddDays(7); nthWeek++; } return(dt); }
public bool IsHolidayFixedWeekdayInWeekdays(DateTime fromDt, DateTime toDt, int year, HolidayFixedWeekday holiday, out DateTime actualDt) { actualDt = DateTime.MinValue; if (holiday.DayOfWeek == (int)DayOfWeek.Sunday || holiday.DayOfWeek == (int)DayOfWeek.Saturday) { return(false); } var dt = GetHolidayFixedWeekday(year, holiday); actualDt = dt; if (dt >= fromDt && dt <= toDt) { return(true); } return(false); }