关于计算日期的代码

/// <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());

转自雁过无痕

转载于:https://www.cnblogs.com/studioyang/archive/2012/06/26/2563323.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值