/// <summary>
/// 计算某年第一周的天数/// </summary>
/// <param name="dt">某年中的一个时间</param>
/// <returns></returns>
public static int DaysInFirstweekInYear(DateTime dt)
{
DateTime FirstDate = Convert.ToDateTime(string.Format("{0}-1-1", dt.Year));
int DayOfWeekInYear = DayOfWeek(FirstDate);
int DaysInFirstWeek = 8 - DayOfWeekInYear;
return DaysInFirstWeek;
}
/// <summary>
/// 一年中的第几周
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static int WeekOfYear(DateTime dt)
{
int days = DaysInFirstweekInYear(dt);
int dayofyear = dt.DayOfYear;
if (dayofyear < days) return 1;
else
{
int week2 = (int)Math.Ceiling((double)(dayofyear - days) / (double)7);
return week2 + 1;
}
}
/// <summary>
/// 传入某一天,输出这一周的起始日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime[] DatesIncludeDay(DateTime dt)
{
DateTime[] dts = new DateTime[2];
int dayofweek = DayOfWeek(dt);
dts[0] = dt.AddDays(1 - dayofweek);
dts[1] = dt.AddDays(7 - dayofweek);
return dts;
}
/// <summary>
/// 计算星期几,转换为数字
/// </summary>
/// <param name="dt">某天的日期</param>
/// <returns></returns>
public static int DayOfWeek(DateTime dt)
{
string strDayOfWeek = dt.DayOfWeek.ToString().ToLower();
int intDayOfWeek = 0;
switch (strDayOfWeek)
{
case "monday":
intDayOfWeek = 1;
break;
case "tuesday":
intDayOfWeek = 2;
break;
case "wednesday":
intDayOfWeek = 3;
break;
case "thursday":
intDayOfWeek = 4;
break;
case "friday":
intDayOfWeek = 5;
break;
case "saturday":
intDayOfWeek = 6;
break;
case "sunday":
intDayOfWeek = 7;
break;
}
return intDayOfWeek;
}
调用:
DateTime dt = Convert.ToDateTime("2013-1-6");
Dictionary<string, DateTime> dict = new Dictionary<string, DateTime>();
dict.Add("0001", DateTime.Now.AddDays(-100));
dict.Add("0002", DateTime.Now.AddDays(-99));
dict.Add("0003", DateTime.Now.AddDays(-98));
dict.Add("0004", DateTime.Now.AddDays(-97));
dict.Add("0005", DateTime.Now.AddDays(-96));
dict.Add("0006", DateTime.Now.AddDays(-95));
dict.Add("0007", DateTime.Now.AddDays(-94));
dict.Add("0008", DateTime.Now.AddDays(-93));
dict.Add("0009", DateTime.Now.AddDays(-92));
dict.Add("0010", DateTime.Now.AddDays(-91));
dict.Add("0011", DateTime.Now.AddDays(-90));
dict.Add("0012", DateTime.Now.AddDays(-89));
dict.Add("0013", DateTime.Now.AddDays(-88));
dict.Add("0014", DateTime.Now.AddDays(-87));
dict.Add("0015", DateTime.Now.AddDays(-86));
dict.Add("0016", DateTime.Now.AddDays(-85));
dict.Add("0017", DateTime.Now.AddDays(0));
dict.Add("0018", DateTime.Now.AddDays(1));
dict.Add("0019", DateTime.Now.AddDays(2));
string str = "";
foreach(KeyValuePair<string,DateTime> kv in dict)
{
DateTime[] dts = Common.OperateText.DatesIncludeDay(kv.Value);
str = str + string.Format("{0},第{1}周,时间{2:yyyy-MM-dd},本周从{3:yyyy-MM-dd}到{4:yyyy-MM-dd} <br/>",kv.Key,Common.OperateText.WeekOfYear(kv.Value),kv.Value,dts[0],dts[1]);
}
Response.Write(str);
效果: