应用场景

假设我有一个任务,任务一共需要 10 个小时就可以完成。任务开始时间是 2018-3-28,结束时间是 2018-4-8。

我们通过日历可以知道,3-31 和 4-1 是周末,然后 4月份的 5、6、7号是清明节。所以 12 天之内,

有 5 天是放假的。意思就是说,我们在 7 天之内,完成 10 个小时的工作量。

所以,我们需要解决的是:在任务期间内,除掉 国家法定假期 和 周末 。 (下文将称为特殊时间)

方案

  • 获取任务的时间段,判断里面是否有节假日或者周末。(这个需要通过工具类来计算)
  • 现在数据库存好今年的国家法定日及周末。然后拿到任务时间段。通过比对时间来判断是否有特殊时间及数目,最后减去即可。

选择及实现

我选择方案二。方案一效率比较低,计算量比较大。方案二比较容易实现。

伪思路及步骤

  1. 定时任务,将今年的特殊事件都存进来。有序,方便查询。
  2. 根据任务时间段来作为查询条件,查询的数量则是特殊时间的数量。
  3. 任务总时间 - 特殊时间天数 则 有效的工作时间。

考虑问题

  1. 任务与特殊时间交错的情况只有三种:开始时间在特殊日期,结束时间不在;开始时间不在特殊时间,结束日期在;开始时间和结束时间之间有特殊时间。(开始时间和结束时间都在特殊时间的话,任务被调到延期状态)
  2. 我们在计算工作趋势的时候,需要注意任务的状态(是在延期还是开发还是调研?)
  3. 特殊时间和周末是否重叠

数据库设计

字段 备注 数据类型
id 索引 Integer
create_by 创建时间 Date
create_date 更新时间 Date
del_flag 是否删除 bool
remarks 备注 varchar(100)
update_by 更新人 Date
record_time  记录时间 Date
special_day 特殊时间 Date

day_type

时间类型(法定日,周末,法定日+周末) String[]

[需求总结] 关于 Java 判断是否为工作日、法定节假日相关推荐

  1. JAVA判断当前时间是否为节假日、周末、工作日,简单有效!

    JAVA判断当前时间是否为节假日.周末.工作日 需求 有这么个需求,需要判断传的这个日期是否为节假日,周末,工作日,然后做剩下的操作. 话不多说,上代码 1.首先需要拿到节假日api 节假日API地址 ...

  2. 判断日期是否为法定节假日的API接口与示例函数

    判断日期是否为法定节假日的API接口与示例函数 需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: http://too ...

  3. php根据当前日期判断法定节假日_判断日期是否为法定节假日的API接口与示例函数...

    需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 请注意,本文 ...

  4. php根据当前日期判断法定节假日_PHP 判断当前日期是否是法定节假日或者休息日 (原)...

    //判断日期是不是节假日或者双休日接口 @param time [时间(时间戳或者Y-m-d都可)] public function get_type_by_date(){ $t = $_GET['t ...

  5. Python判断指定日期是不是法定节假日

    判断一个日期是否为工作日.节假日,有一个现成的库函数:chinesecalendar chinesecalendar · PyPI 1.安装 pip3 install chinesecalendar ...

  6. 节假日读取接口_判断日期是否为法定节假日的API接口与示例函数

    需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 在我的小项目 ...

  7. java方法 判断今天是工作日/周末/节假日

    1.工具类里静态方法 public static String request( String httpArg) {String httpUrl="http://tool.bitefu.ne ...

  8. java 判断当前时间是否为节假日_最近公司招人,研发组商量了下,暂时定下这么多java面试题!...

    一.List相关面试题 List是一个集合接口,分为AarrayList和LinkedList两个实现方式 ArrayList:底层实现就是数组,且ArrayList实现了RandomAccess,表 ...

  9. java 判断当前时间是否为节假日_浅谈Java8日期时间处理

    各位小伙伴们,我们又见面了,今天峰哥跟大家分享一下java8的全新日期时间处理API.在Java8之前,我们使用的日期时间是: java.util.Datejava.util.Calendar jav ...

最新文章

  1. nodejs安装及npm模块插件安装路径配置
  2. 代码片段--批量生产库以及可执行文件的依赖关系
  3. 高级经济师计算机水平考试,【2017上海高级经济师评审职称外语、计算机成绩不再为前置条件】- 环球网校...
  4. Javascript - Jquery - 事件
  5. Linux新手入门:Unable to locate package错误解决办法
  6. (14)Verilog数据类型-基本语法(二)(第3天)
  7. 07-R语言jiebaR包的分词学习
  8. boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录
  9. 使用ASP.NET Core、JavaScript和Angular防止CSRF攻击
  10. Mediator(中介者)-对象行为型模式
  11. iOS | 地图定位
  12. Swift语言中的@available 和 #available
  13. 电脑垃圾太多?这几个清理电脑的软件来看看吗?
  14. 我所经历的Android面试|掘金技术征文
  15. BAT文件批量创建目录或docx, xlsx, txt文件
  16. LeetCode 325. Maximum Size Subarray Sum Equals k
  17. 华为p40支持鸿蒙,华为P40来袭,支持鸿蒙系统,花粉直呼惊喜
  18. 第五章 光学系统中成像光束的选择
  19. 历史角度看唐朝四期(初、盛、中、晚)
  20. 面试经历:百度-数据分析与数据挖掘(实习生)

热门文章

  1. ROS::机器人系统分布式配置
  2. 睡觉睡到自然醒隐私协议
  3. 搞编程,你必知必会的复杂度分析
  4. 【中断篇】中断控制器及中断检测时序
  5. 【专访华进联合高级合伙人胡杰】招募一个人,激励几个人,培养一群人
  6. 跳槽涨薪多少才不亏?给你指条明路!
  7. 人类基因组参考基因组
  8. du 只查看当前一层目录的大小
  9. 建模小白适合从什么3D建模软件入手学习?
  10. SSM 之 java.lang.IllegalStateException: Failed to load ApplicationContext 错误解决方案