通过年月周查询查询本周有哪些天

 

这是今天做一个计划统计写的一个简单算法,通过年,月,周计算出本周有哪些天,测试效果图如下:

第一步:获取本月第一周第一个工作日

View Code
 1     /// <summary>
2 /// 获取本月第一周第一个工作日
3 /// </summary>
4 /// <param name="weekEnum">本月一号在这一周星期几</param>
5 /// <returns>本月第一周第一个工作日</returns>
6 private int GetFirstWeekDayWithMonth(DayOfWeek weekEnum)
7 {
8 if (weekEnum.GetHashCode() == 1)
9 return 1;
10 else if (weekEnum.GetHashCode() == 0)
11 return 2;
12 else
13 return 7 - weekEnum.GetHashCode() + 2;
14 }

 

第二步:获取本月最后一个工作日

View Code
 1    /// <summary>
2 /// 获取本月最后一天
3 /// </summary>
4 /// <param name="year"></param>
5 /// <param name="month"></param>
6 /// <returns>本月最后一个工作日</returns>
7 private int GetLastDayWithMonth(int year, int month)
8 {
9 int maxDay = 1;
10 switch (month)
11 {
12 case 1:
13 case 3:
14 case 5:
15 case 7:
16 case 8:
17 case 10:
18 case 12:
19 maxDay = 31;
20 break;
21 case 2:
22 if (year % 4 == 0) maxDay = 29; else maxDay = 28;
23 break;
24 case 4:
25 case 6:
26 case 9:
27 case 11:
28 maxDay = 30;
29 break;
30 default:
31 return maxDay;
32 }
33 return maxDay;
34 }

第三步:计算

View Code
 1        /// <summary>
2 /// 根据年月周计算时间
3 /// </summary>
4 /// <param name="year"></param>
5 /// <param name="month"></param>
6 /// <param name="week"></param>
7 /// <returns>DateTime[]时间</returns>
8 public DateTime[] GetDaysByWeekAndMont(int year, int month, int week)
9 {
10 int firstDay = 0;
11 DateTime[] days = new DateTime[] { new DateTime() };
12 if (month < 13 && week < 6)
13 {
14 DateTime date = new DateTime(year, month, 1);
15 firstDay = GetFirstWeekDayWithMonth(date.DayOfWeek) + 7 * (week - 1);
16 if (firstDay <= GetLastDayWithMonth(year, month))
17 {
18 days = new DateTime[7];
19 for (int i = 0; i < 7; i++)
20 {
21 if (firstDay <= GetLastDayWithMonth(year, month) && month < 13)
22 days[i] = new DateTime(year, month, firstDay++);
23 else if (firstDay >= GetLastDayWithMonth(year, month) && month < 13)
24 {
25 firstDay = 1;
26 if (month != 12)
27 days[i] = new DateTime(year, ++month, firstDay++);
28 else
29 {
30 month = 1;
31 days[i] = new DateTime(++year, month++, firstDay++);
32 }
33 }
34 else if (firstDay <= GetLastDayWithMonth(year, month) && month > 12)
35 {
36 days[i] = new DateTime(year, month, firstDay++);
37 }
38 else if (firstDay >= GetLastDayWithMonth(year, month) && month > 12)
39 {
40 month = 1; firstDay = 1;
41 days[i] = new DateTime(year, month++, firstDay++);
42 }
43 }
44 }
45 else
46 throw new Exception(year.ToString() + "" + month + "月没有第" + week + ""); //Console.WriteLine("输入时间错误");
47 }
48 else if (month > 12 )
49 throw new Exception(year + "年没有" + month + "");//Console.WriteLine("输入时间错误");
50 else if (month < 13 && week > 5)
51 throw new Exception(year + "" + month + "月没有第" + week + "");
52 return days;
53 }



 

转载于:https://www.cnblogs.com/baimincheng/archive/2012/02/20/planDate.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值