/// </summary>
/// <paramname="y"></param>
/// <paramname="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
![C#日期月天数和一年有多少周及某年某周时间段的计算 php计算日期相差天数](http://img.aihuau.com/images/02111102/02013327t01b551170d3aa69160.jpg)
/// 周数 nNumWeek
/// 周始 out dtWeekStart
/// 周终 out dtWeekeEnd
/// </summary>
/// <paramname="nYear"></param>
/// <paramname="nNumWeek"></param>
/// <paramname="dtWeekStart"></param>
/// <paramname="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>
/// <paramname="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 == 1)
{
int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
int countWeek = countDay / 7 + 1;
return countWeek;
}
else
{
int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear;
int countWeek = countDay / 7 + 2;
return countWeek;
}
}
/// <summary>
/// 求当前日期是一年的中第几周
/// </summary>
/// <paramname="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;
}
}