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

今天在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());

转载于:https://www.cnblogs.com/Donkey/archive/2010/07/12/1776050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值