您的位置:首页 > 编程语言 > C#

(转载)C#获取指定月指定周的日期范围

2010-07-12 21:19 429 查看
今天在CSDN上解答了一个帖子,顺便写了这样一个函数。
  
  每周按从周一开始,周日结束。
  

/// <summary>
/// 获取指定月份指定周数的开始日期
/// </summary>
/// <param name="year">年份</param>
/// <param name="month">月份</param>
/// <param name="index">周数</param>
/// <returns></returns>
private DateTime GetStartDayOfWeeks(int year, int month, int index)
{
if (year < 1600 || year > 9999)
{
MessageBox.Show("年份超限");
return DateTime .MinValue ;
}
if (month < 0 || month > 12)
{
MessageBox.Show("月份错误");
return DateTime .MinValue ;
}
if (index < 1)
{
MessageBox.Show("周数错误");
return DateTime.MinValue;
}
DateTime startMonth = new DateTime(year, month, 1); //该月第一天
int dayOfWeek = 7;
if (Convert.ToInt32(startMonth.DayOfWeek.ToString("d")) > 0)
dayOfWeek = Convert.ToInt32(startMonth.DayOfWeek.ToString("d")); //该月第一天为星期几
DateTime startWeek = startMonth.AddDays(1 - dayOfWeek); //该月第一周开始日期
//DateTime startDayOfWeeks = startWeek.AddDays((index - 1) * 7); //index周的起始日期
DateTime startDayOfWeeks = startWeek.AddDays(index * 7); //index周的起始日期
if ((startDayOfWeeks - startMonth.AddMonths(1)).Days > 0) //startDayOfWeeks不在该月范围内
{
MessageBox.Show("输入周数大于本月最大周数");
return DateTime.MinValue;
}
return startDayOfWeeks;
}
  这里根据规则的不同,使用不同的代码,以2007年7月为例,7月1日为星期日

    DateTime startDayOfWeeks = startWeek.AddDays((index - 1) * 7); //index周的起始日期这样获取的7月第一周的起始日期为2007-6-25

    DateTime startDayOfWeeks = startWeek.AddDays(index * 7); //index周的起始日期这样获取的7月第一周的起始日期为2007-7-2

  在调用时,先判断一下返回值是否为DateTime.MinValue再使用

DateTime start = GetStartDayOfWeeks(2007, 7, 1);
if (start != DateTime.MinValue)
{
MessageBox.Show(start.ToShortDateString());
}该周的结束日期只要在开始日期基础上加6天就可以了

DateTime end = start.AddDays(6);
MessageBox.Show(end.ToShortDateString());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: