public void NegTest3()
        {
            System.Globalization.Calendar tc = new TaiwanCalendar();
            Random rand  = new Random(-55);
            int    year  = rand.Next(tc.MinSupportedDateTime.Year, tc.MaxSupportedDateTime.Year - 1911);
            int    month = rand.Next(1, 12);
            int    day;

            if (tc.IsLeapYear(year))
            {
                day = rand.Next(1, _DAYS_PER_MONTHS_IN_LEAP_YEAR[month] + 1);
            }
            else
            {
                day = rand.Next(1, _DAYS_PER_MONTHS_IN_NO_LEAP_YEAR[month] + 1);
            }

            DateTime dt = new DateTime(year, month, day);

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                tc.GetWeekOfYear(dt, (CalendarWeekRule)3, DayOfWeek.Sunday);
            });

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                tc.GetWeekOfYear(dt, (CalendarWeekRule)(-1), DayOfWeek.Sunday);
            });
        }
        public void PosTest1()
        {
            System.Globalization.Calendar tc = new TaiwanCalendar();
            Random rand  = new Random(-55);
            int    year  = rand.Next(tc.MinSupportedDateTime.Year, tc.MaxSupportedDateTime.Year - 1911);
            int    month = rand.Next(1, 12);
            int    day;

            if (tc.IsLeapYear(year))
            {
                day = rand.Next(1, _DAYS_PER_MONTHS_IN_LEAP_YEAR[month] + 1);
            }
            else
            {
                day = rand.Next(1, _DAYS_PER_MONTHS_IN_NO_LEAP_YEAR[month] + 1);
            }
            DateTime dt = new DateTime(year, month, day);

            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    int actualWeek = getWeekOfYear(dt, (CalendarWeekRule)j, (DayOfWeek)i);
                    int resultWeek = tc.GetWeekOfYear(dt, (CalendarWeekRule)j, (DayOfWeek)i);
                    Assert.Equal(resultWeek, actualWeek);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 獲取一年中有多少週
        /// </summary>
        /// <param name="year">年</param>
        /// <returns> 獲取一年中有多少週</returns>
        public static int GetWeekAmount(int year)
        {
            DateTime       end = new DateTime(year, 12, 31);
            TaiwanCalendar tc  = new TaiwanCalendar();

            return(tc.GetWeekOfYear(end, CalendarWeekRule.FirstDay, DayOfWeek.Monday));
        }
        public void NegTest1()
        {
            System.Globalization.Calendar tc = new TaiwanCalendar();
            Random   rand = new Random(-55);
            DateTime dt   = tc.MinSupportedDateTime;

            dt = dt.AddYears(rand.Next(-1911, -1));

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                tc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
            });
        }
        public void PosTest3()
        {
            System.Globalization.Calendar tc = new TaiwanCalendar();
            DateTime dt = tc.MinSupportedDateTime;

            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    int actualWeek = getWeekOfYear(dt, (CalendarWeekRule)j, (DayOfWeek)i);
                    int resultWeek = tc.GetWeekOfYear(dt, (CalendarWeekRule)j, (DayOfWeek)i);
                    Assert.Equal(resultWeek, actualWeek);
                }
            }
        }
        public void PosTest4()
        {
            System.Globalization.Calendar tc = new TaiwanCalendar();
            System.Globalization.Calendar gc = new GregorianCalendar();
            Random   rand       = new Random(-55);
            int      year       = rand.Next(tc.MinSupportedDateTime.Year, tc.MaxSupportedDateTime.Year - 1911);
            int      month      = 12;
            int      day        = 31;
            int      actualWeek = 53;
            DateTime dt         = new DateTime(year, month, day);

            if (DayOfWeek.Saturday == new DateTime(year, 1, 1).DayOfWeek&& DateTime.IsLeapYear(year))
            {
                actualWeek = 54;
            }
            int resultWeek = tc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);

            Assert.Equal(resultWeek, actualWeek);
        }
Пример #7
0
        /// <summary>
        /// 獲取某一日期是該年中的第幾週
        /// </summary>
        /// <param name="d​​t">日期</param>
        /// <returns> 該日期在該年中的周數</returns>
        public static int GetWeekOfYear(this DateTime dt)
        {
            TaiwanCalendar tc = new TaiwanCalendar();

            return(tc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday) + (dt.DayOfWeek == DayOfWeek.Sunday ? 1 : 0));
        }