Code:
/// <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);
效果: