/// 当前月有多少天/// </summary>/// <param name="y"></param>/// <param name="m"></param>/// <returns></returns>public static int HowMonthDay(int y, int m){int mnext;int ynext;if (m < 12){mnext = m + 1;ynext = y;}else{mnext = 1;ynext = y + 1;}DateTime dt1 = System.Convert.ToDateTime(y + "-" + m + "-1");DateTime dt2 = System.Convert.ToDateTime(ynext + "-" + mnext + "-1");TimeSpan diff = dt2 - dt1;return diff.Days;}
/// <summary>/// 得到一年中的某周的起始日和截止日/// 年 nYear/// 周数 nNumWeek/// 周始 out dtWeekStart/// 周终 out dtWeekeEnd/// </summary>/// <param name="nYear"></param>/// <param name="nNumWeek"></param>/// <param name="dtWeekStart"></param>/// <param name="dtWeekeEnd"></param>public static void GetWeek(int nYear, int nNumWeek, out DateTime dtWeekStart, out DateTime dtWeekeEnd){DateTime dt = new DateTime(nYear, 1, 1);dt = dt + new TimeSpan((nNumWeek - 1) * 7, 0, 0, 0);dtWeekStart = dt.AddDays(-(int)dt.DayOfWeek + (int)DayOfWeek.Monday);dtWeekeEnd = dt.AddDays((int)DayOfWeek.Saturday - (int)dt.DayOfWeek + 1);}
/// <summary>/// 求某年有多少周/// 返回 int/// </summary>/// <param name="strYear"></param>/// <returns>int</returns>public static int GetYearWeekCount(int strYear){string returnStr = "";System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01");int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几 if (k == 0){int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;int countWeek = countDay / 7 + 2;return countWeek;}else{int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;int countWeek = countDay / 7 + 1;return countWeek;}}
/// <summary>/// 求当前日期是一年的中第几周/// </summary>/// <param name="date"></param>/// <returns></returns>public static int WeekOfYear(DateTime curDay){int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "- " + "1-1 ").DayOfWeek);int days = curDay.DayOfYear;int daysOutOneWeek = days - (7 - firstdayofweek);if (daysOutOneWeek <= 0){return 1;}else{int weeks = daysOutOneWeek / 7;if (daysOutOneWeek % 7 != 0)weeks++;return weeks + 1;}}
(注:转自/yuanermen/archive//07/14/1242853.html)