#region 取得周次
/// <summary>
/// 传入日期获得日期对应周次
/// </summary>
/// <param name="_dt">日期</param>
/// <returns>对应周次</returns>
public int getWeek(CReportKEY sender,DateTime _dt)
{
int Count = _dt.DayOfYear;
int Weeks = 1;
int StrOfWeek = 0;
DateTime firstDay = _dt.AddDays(-_dt.DayOfYear + 1);
if ((int)firstDay.DayOfWeek < StrOfWeek)
{
Count = Count - (StrOfWeek - (int)firstDay.DayOfWeek);
}
else if ((int)firstDay.DayOfWeek > StrOfWeek)
{
Count = Count - (StrOfWeek - (int)firstDay.DayOfWeek + 7);
}
else
{
Weeks -= 1;
}
Weeks = Weeks + (Count / 7) + ((Count % 7) > 0 ? 1 : 0);
return Weeks;
}
#endregion
#region 取该周最后一天
public DateTime getDate( int Week)
{
int Differ = 0, Weeks = Week;
DateTime firstDay = DateTime.Now.AddDays(-DateTime.Now.DayOfYear + 1);
int StrOfWeek = 0;
if ((int)firstDay.DayOfWeek < StrOfWeek)
{
Differ = StrOfWeek - (int)firstDay.DayOfWeek;
Weeks -= 1;
}
else if ((int)firstDay.DayOfWeek > StrOfWeek)
{
Differ = StrOfWeek - (int)firstDay.DayOfWeek+7 ;
Weeks -= 1;
}
else
{
//if (Weeks != 1) Weeks -= 1;
}
DateTime _now = DateTime.Now.AddDays(-DateTime.Now.DayOfYear + Weeks * 7 + Differ);
return _now;
}
#endregion
关键点是设置一周开始在星期几。