예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }