根据开始日期,结束日期,计算出日历上有几周的方法

  public static int CalculationWeek(DateTime periodStart, DateTime periodEnd){const DayOfWeek FIRST_DAY_OF_WEEK = DayOfWeek.Monday;const DayOfWeek LAST_DAY_OF_WEEK = DayOfWeek.Sunday;const int DAYS_IN_WEEK = 7;DateTime firstDayOfWeekBeforeStartDate;int daysBetweenStartDateAndPreviousFirstDayOfWeek = (int)periodStart.DayOfWeek - (int)FIRST_DAY_OF_WEEK;if (daysBetweenStartDateAndPreviousFirstDayOfWeek >= 0){firstDayOfWeekBeforeStartDate = periodStart.AddDays(-daysBetweenStartDateAndPreviousFirstDayOfWeek);}else{firstDayOfWeekBeforeStartDate = periodStart.AddDays(-(daysBetweenStartDateAndPreviousFirstDayOfWeek + DAYS_IN_WEEK));}DateTime lastDayOfWeekAfterEndDate;int daysBetweenEndDateAndFollowingLastDayOfWeek = (int)LAST_DAY_OF_WEEK - (int)periodEnd.DayOfWeek;if (daysBetweenEndDateAndFollowingLastDayOfWeek >= 0){lastDayOfWeekAfterEndDate = periodEnd.AddDays(daysBetweenEndDateAndFollowingLastDayOfWeek);}else{lastDayOfWeekAfterEndDate = periodEnd.AddDays(daysBetweenEndDateAndFollowingLastDayOfWeek + DAYS_IN_WEEK);}int calendarWeeks = 1 + (int)((lastDayOfWeekAfterEndDate - firstDayOfWeekBeforeStartDate).TotalDays / DAYS_IN_WEEK);return calendarWeeks;}

循环这几周,计算出每周的开始日期结束日期

 DateTime periodStart = DateTime.Parse("2021-03-24");DateTime periodEnd = DateTime.Parse("2021-03-29");string weekBegin = string.Empty;string weekEnd = string.Empty;int calculationWeekTemp = CalculationWeek(periodStart, periodEnd);for (int i = 1; i <= calculationWeekTemp; i++){if (i == 1 && i == calculationWeekTemp)//只有一周的情况{weekBegin = periodStart.ToString();weekEnd = periodEnd.ToString();LogHelper.WriteInfoLog(string.Format("i={0} begin={1} end={2}", i, weekBegin, weekEnd));}else if (i == 1 && i != calculationWeekTemp)//大于1周的情况{weekBegin = periodStart.ToString();DateTime dtDate = DateTime.Parse(weekBegin);int weekEndNum = 0;if (dtDate.DayOfWeek == DayOfWeek.Monday){weekEndNum = 6;}if (dtDate.DayOfWeek == DayOfWeek.Tuesday){weekEndNum = 5;}if (dtDate.DayOfWeek == DayOfWeek.Wednesday){weekEndNum = 4;}if (dtDate.DayOfWeek == DayOfWeek.Thursday){weekEndNum = 3;}if (dtDate.DayOfWeek == DayOfWeek.Friday){weekEndNum = 2;}if (dtDate.DayOfWeek == DayOfWeek.Saturday){weekEndNum = 1;}if (dtDate.DayOfWeek == DayOfWeek.Sunday){weekEnd= periodStart.ToString("yyyy-MM-dd");}else{weekEnd = periodStart.AddDays(weekEndNum).ToString("yyyy-MM-dd");}LogHelper.WriteInfoLog(string.Format("i={0} begin={1} end={2}", i, weekBegin, weekEnd));}else if (i == calculationWeekTemp)//处理最后一周的情况{weekBegin = weekEnd.ToString();weekEnd = periodEnd.ToString();LogHelper.WriteInfoLog(string.Format("i={0} begin={1} end={2}", i, weekBegin, weekEnd));}else//处理中间的周情况{weekBegin = weekEnd.ToString();weekEnd = DateTime.Parse(weekBegin).AddDays(7).ToString("yyyy-MM-dd");LogHelper.WriteInfoLog(string.Format("i={0} begin={1} end={2}", i, weekBegin, weekEnd));}}

根据开始日期,结束日期,计算出日历上有几周的方法相关推荐

  1. WPS表格 - 根据日期,快速计算出是星期几

    大家是不是经常遇到在表格当中录入了日期,后期领导可能会让你将日期更改成星期几的形式呈现,大家是否对照了日历一个一个手动改呢?既然我们在使用Excel,那我们就让Excel帮我们出来如何将日期自动计算出 ...

  2. 关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错...

    关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错 如果要计算两个时间是否满意年,可以相减,最小365,润年366天.求整 转载于:ht ...

  3. js通过开始时间和结束时间计算出中间的所有日期,并且转换为层级结构数组对象,用于甘特图头部日期数据

    写在前面: 先看下最终数据结构展示 time('2020-10-01', '2021-01-06') 需要根据一个开始日期和一个结束日期最后返回以下数组对象 [最外层数组里的每个对象代表了某一年的所有 ...

  4. 小程序 机票火车票酒店 开始日期结束日期选择 日历组件

    github:https://github.com/xiaoyangyang-code/calendar 码云:https://gitee.com/xiaoyang688/calendar ##先看一 ...

  5. Android 自定义日期段选择控件,开始日期-结束日期。

    开发中碰到个需求,需要在一个控件中选择完成开始和结束日期.实现的过程走的是程序员开发的老路子,找到轮子后自己改吧改吧就成了.去年做的找不到参考的文章连接了,请原博主见谅. 当时做的时候有几个需求:1. ...

  6. 通过开始日期结束日期算请假天数

    在实体中两个Date属性的变量加上注解. 加注解后得到的startDate为YYYY-MM-DD格式 @DateTimeFormat(pattern = SimpleDateUtil.COMMON_D ...

  7. shell 开始日期 结束日期循环

    shell 日期循环 #!/bin/sh if [ $# == 2 ]; thendatebeg=$1dateend=$2 elseecho "请输入开始时间和结束日期,格式为2017-04 ...

  8. python week 获取 星期 第几周 开始日期 结束日期 星期几

    获取一周的开始和结束 from datetime import datetime, timedeltaday = '12/Oct/2013' dt = datetime.strptime(day, ' ...

  9. layui layDate 设置开始日期结束日期(开始日期不大于结束日期)

    var start = laydate.render({elem: '#startTime',format: 'yyyy-MM-dd',// isInitValue: true,// value: s ...

  10. Python 浮点数计算出十几位小数的解决方法

    0.1+0.2 Out[2]: 0.30000000000000004 3.14*19 Out[4]: 59.660000000000004 0.1*0.2 Out[5]: 0.02000000000 ...

最新文章

  1. 比尔盖茨护犊子 称iPad让大批用户沮丧
  2. vue中props的双向绑定
  3. 【解题报告+思路拓展】蓝桥杯 拉马车 2017年C组真题
  4. 假设有python程序文件_《Python程序设计》题库
  5. 2017.5.7 过河 失败总结
  6. 【嵌入式设计】嵌入式低功耗设计
  7. 深度限流装置是什么_集团公司首例零损耗深度限流装置顺利投运
  8. RxJS的另外四种实现方式(一)——代码最小的库
  9. 数字权限管理(DRM)技术
  10. CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached
  11. c语言 大数开方,c语言求一个数的平方根
  12. HTML基础代码用法大全,html代码大全(基础使用代码)(颜色代码完整版)
  13. VMware虚拟机安装使用及系统安装教程
  14. win10虚拟内存设置方法
  15. A-priori算法的简单实现
  16. 统计|如何建立单总体方差的置信区间
  17. 超详细修改C盘下的用户名(适合win10和win11)
  18. UVA The Sultan's Successors
  19. aws mysql 费用_AWS 免费一年套餐详解
  20. 关于2021年11月28日PMI认证考试的报名通知

热门文章

  1. 光环PMP 项目资源管理、项目相关方管理
  2. 联想ts250进bios_联想Think TS250/TS550安装server 2008 R2/2012系统教程【一】
  3. 《黑马QT视频教程》2020.7.31学习日记
  4. 关于APP接口设计 注意事项
  5. android 参数签名 存放,SignatureView 一个在Android上的电子签名板,能保存所签名的图片...
  6. Vue Canvas 实现电子签名 手写板
  7. 亚马逊 kindle 刷机 过程记录
  8. 微观经济学(第一课)笔记
  9. YALMIP介绍及怎么在Matlab中加YALMIP、SDPT3
  10. FFplay硬件加速