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); } } }
/// <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); }
/// <summary> /// 獲取某一日期是該年中的第幾週 /// </summary> /// <param name="dt">日期</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)); }