/// <summary>
/// 获取该月中是第几周
/// </summary>
/// <param name="day">日期</param>
/// <returns></returns>
private int WeekOfMonth(System.DateTime day)
{
string y = day.Year.ToString();
string m = day.Month.ToString();
string s = y + "-" + m + "-1";
DateTime dt = DateTime.Parse(s);
int d = day.Day - dt.Day;
int w = 1;
for (int i = 1; i <= d; i++)
{
DateTime dt1 = dt.AddDays(i);
if (dt1.DayOfWeek == DayOfWeek.Sunday)
{
w = w + 1;
}
}
return w;
}
/// <summary>
/// 获取该年中是第几周
/// </summary>
/// <param name="day">日期</param>
/// <returns></returns>
private int WeekOfYear(System.DateTime day)
{
int weeknum;
System.DateTime fDt = DateTime.Parse(day.Year.ToString() + "-01-01");
int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几
if (k == 0)
{
k = 7;
}
int l = Convert.ToInt32(day.DayOfYear);//得到当天是该年的第几天
l = l - (7 - k + 1);
if (l <= 0)
{
weeknum = 1;
}
else
{
if (l % 7 == 0)
{
weeknum = l / 7 + 1;
}
else
{
weeknum = l / 7 + 2;//不能整除的时候要加上前面的一周和后面的一周
}
}
return weeknum;
}
第二种方法:double s = System.Math.Floor((double)((Convert.ToDateTime(this.txtStarttime.Text).DayOfYear) + (Convert.ToInt32(Convert.ToDateTime(Convert.ToDateTime(this.txtStarttime.Text).Year.ToString() + "-1-1").DayOfWeek)) - 1) / 7) + 1;