取周别范围 根据当前的周别获取这个周别的日期范围(用微软取周别的方法)例如:2011年25周的日期范围 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 取得所在年份 1.1 的 DayOfWeek,据此推算出第二周的范围。其余周就可以在这个日期范围上用 AddDays() (n - 2) * 7 即可。最后一周(52周)需要小判断下,以免超过到下一年。 void Main(){ DateTime dt=new DateTime(2011,1,1); for(int i=0;i<7;i++) { if(dt.DayOfWeek==DayOfWeek.Monday) { break; } else dt=dt.AddDays(1); } dt=dt.AddDays(25*7); if(dt.Year>2011 || dt.AddDays(7).Year>2011) throw new Exception("Out of this year!"); Console.WriteLine("2011年25周的日期范围为:{0}--{1}",dt.ToShortDateString(),dt.AddDays(7).ToShortDateString()); //2011年25周的日期范围为:6/27/2011--7/4/2011} 这是我前几天一个项目里用到时写的。给分吧哥们。我这个很实用哟using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MEETOK.Components{ public class ToolDate { /// <summary> /// 周次转化为日期范围 /// </summary> /// <param name="ParmYear">年</param> /// <param name="ParmWeek">周次</param> /// <returns></returns> public static string WeekToDate(int ParmYear, int ParmWeek) { int year = ParmYear, yearStart, yearEnd, monthStart, monthEnd, dayStart, dayEnd, week = ParmWeek, sum = 0; int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int i; sum += 7 * (week - 1); //修正当前总天数 #region switch (DateTime.Parse(year + "-1-1").DayOfWeek) { case DayOfWeek.Tuesday: { sum += 5; break; } case DayOfWeek.Wednesday: { sum += 4; break; } case DayOfWeek.Thursday: { sum += 3; break; } case DayOfWeek.Friday: { sum += 2; break; } case DayOfWeek.Saturday: { sum += 1; break; } case DayOfWeek.Sunday: { //sum; break; } default: break; } #endregion //判断2月天数 if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) { days[1] = 29; } //计算出当前是一年的第几天 for (i = 0; i < days.Length; i++) { if (sum >= days[i]) { sum -= days[i]; } else { break; } } #region yearStart = year; monthStart = i + 1; dayStart = sum + 1; //修改开始日期 if (dayStart < 1) { dayStart += days[11]; monthStart = 12; yearStart--; } yearEnd = yearStart; monthEnd = monthStart; dayEnd = dayStart + 6; if (dayEnd > days[monthStart - 1]) { dayEnd -= days[monthStart - 1]; monthEnd++; if (monthEnd > 12) { monthEnd = 1; yearEnd++; } } #endregion return yearStart + "." + monthStart + "." + dayStart + "-" + yearEnd + "." + monthEnd + "." + dayEnd; } /// <summary> /// 返回月度范围 /// </summary> /// <param name="ParYear">年</param> /// <param name="ParMonth">月</param> /// <returns></returns> public static string MonthToDate(int ParYear, int ParMonth) { int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //判断2月天数 if ((ParYear % 400 == 0) || (ParYear % 4 == 0 && ParYear % 100 != 0)) { days[1] = 29; } return ParYear + "." + ParMonth + ".1-" + ParYear + "." + ParMonth + "." + days[ParMonth - 1]; } /// <summary> /// 返回季度范围 /// </summary> /// <param name="ParYear"></param> /// <param name="Quarter"></param> /// <returns></returns> public static string QuarterToDate(string ParYear, int Quarter) { string[] QuarterToMonth = { ParYear + ".01.01-" + ParYear + ".03.31", ParYear + ".04.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".09.30", ParYear + ".10.01-" + ParYear + ".12.31" }; return QuarterToMonth[Quarter - 1]; } /// <summary> /// 返回上下半年范围 /// </summary> /// <param name="ParYear">年</param> /// <param name="upOrDown">上/下 半年 0上半年,1下半年</param> /// <returns></returns> public static string YearToDate(string ParYear, int upOrDown) { string[] YearStatus = { ParYear + ".01.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".12.31" }; return YearStatus[upOrDown]; } }} 怎么把DataTable 拆分 请一下面的代码是什么意思 做安装包时的复选框只的4个,能怎样加到4个以上。 如何对ArrayList中的Object按其某一属性进行正反的排序? 如何让数字不用科学计数法表示啊?各位大侠帮一下,谢谢 客户端读取datagrid单元格数据(编辑状态)的问题? 如何将C#开发的组件编译为VB6可用的COM(编译为非托管代码)? C# 无法解密java写AES加密算法 如何部署三层数据结构的应用程序?? 哪位大侠用C#控制过并口条码打印机 请教大牛这个面向对象设计是否合理 C#能否使用如同LabView中的“里程表”显示控件?
其余周就可以在这个日期范围上用 AddDays() (n - 2) * 7 即可。
最后一周(52周)需要小判断下,以免超过到下一年。
void Main()
{
DateTime dt=new DateTime(2011,1,1);
for(int i=0;i<7;i++)
{
if(dt.DayOfWeek==DayOfWeek.Monday)
{
break;
}
else dt=dt.AddDays(1);
}
dt=dt.AddDays(25*7);
if(dt.Year>2011 || dt.AddDays(7).Year>2011)
throw new Exception("Out of this year!");
Console.WriteLine("2011年25周的日期范围为:{0}--{1}",dt.ToShortDateString(),dt.AddDays(7).ToShortDateString());
//2011年25周的日期范围为:6/27/2011--7/4/2011
}
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace MEETOK.Components
{
public class ToolDate
{ /// <summary>
/// 周次转化为日期范围
/// </summary>
/// <param name="ParmYear">年</param>
/// <param name="ParmWeek">周次</param>
/// <returns></returns>
public static string WeekToDate(int ParmYear, int ParmWeek)
{ int year = ParmYear, yearStart, yearEnd, monthStart, monthEnd, dayStart, dayEnd, week = ParmWeek, sum = 0;
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i;
sum += 7 * (week - 1); //修正当前总天数
#region
switch (DateTime.Parse(year + "-1-1").DayOfWeek)
{
case DayOfWeek.Tuesday:
{
sum += 5;
break;
}
case DayOfWeek.Wednesday:
{
sum += 4;
break;
}
case DayOfWeek.Thursday:
{
sum += 3;
break;
}
case DayOfWeek.Friday:
{
sum += 2;
break;
}
case DayOfWeek.Saturday:
{
sum += 1;
break;
}
case DayOfWeek.Sunday:
{
//sum;
break;
}
default:
break;
}
#endregion //判断2月天数
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
days[1] = 29;
} //计算出当前是一年的第几天
for (i = 0; i < days.Length; i++)
{
if (sum >= days[i])
{
sum -= days[i];
}
else
{
break;
}
}
#region
yearStart = year;
monthStart = i + 1;
dayStart = sum + 1; //修改开始日期
if (dayStart < 1)
{
dayStart += days[11];
monthStart = 12;
yearStart--;
} yearEnd = yearStart;
monthEnd = monthStart;
dayEnd = dayStart + 6;
if (dayEnd > days[monthStart - 1])
{
dayEnd -= days[monthStart - 1];
monthEnd++;
if (monthEnd > 12)
{
monthEnd = 1;
yearEnd++;
}
}
#endregion
return yearStart + "." + monthStart + "." + dayStart + "-" + yearEnd + "." + monthEnd + "." + dayEnd;
}
/// <summary>
/// 返回月度范围
/// </summary>
/// <param name="ParYear">年</param>
/// <param name="ParMonth">月</param>
/// <returns></returns>
public static string MonthToDate(int ParYear, int ParMonth)
{
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//判断2月天数
if ((ParYear % 400 == 0) || (ParYear % 4 == 0 && ParYear % 100 != 0))
{
days[1] = 29;
}
return ParYear + "." + ParMonth + ".1-" + ParYear + "." + ParMonth + "." + days[ParMonth - 1];
} /// <summary>
/// 返回季度范围
/// </summary>
/// <param name="ParYear"></param>
/// <param name="Quarter"></param>
/// <returns></returns>
public static string QuarterToDate(string ParYear, int Quarter)
{
string[] QuarterToMonth = { ParYear + ".01.01-" + ParYear + ".03.31", ParYear + ".04.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".09.30", ParYear + ".10.01-" + ParYear + ".12.31" };
return QuarterToMonth[Quarter - 1];
}
/// <summary>
/// 返回上下半年范围
/// </summary>
/// <param name="ParYear">年</param>
/// <param name="upOrDown">上/下 半年 0上半年,1下半年</param>
/// <returns></returns>
public static string YearToDate(string ParYear, int upOrDown)
{
string[] YearStatus = { ParYear + ".01.01-" + ParYear + ".06.30", ParYear + ".07.01-" + ParYear + ".12.31" };
return YearStatus[upOrDown];
} }
}