国家法定节假日

package com.newland.dateutil;

import java.text.ParseException;

import java.text.simpledateformat;

import java.util.Arrays;

import java.util.calendar;

import java.util.Date;

import java.util.List;

/**

* @author qyw

* @description 日期日历工具类

* @date Created in 21:01 2019/1/31

**/

public class ChineseCalendarUtils {

// 法律规定的放假日期

private List lawHolidays = Arrays.asList("2017-12-30", "2017-12-31",

"2018-01-01", "2018-02-15", "2018-02-16", "2018-02-17", "2018-02-18",

"2018-02-19", "2018-02-20", "2018-02-21", "2018-04-05", "2018-04-06",

"2018-04-07", "2018-04-29", "2018-04-30", "2018-05-01", "2018-06-16",

"2018-06-17", "2018-06-18", "2018-09-22", "2018-09-23", "2018-09-24",

"2018-10-01", "2018-10-02", "2018-10-03", "2018-10-04", "2018-10-05",

"2018-10-06", "2018-10-07");

// 由于放假需要额外工作的周末

private List extraWorkdays = Arrays.asList("2018-02-11", "2018-02-24",

"2018-04-08", "2018-04-28", "2018-09-29", "2018-09-30");

/**

* @author qyw

* @description 判断是否是法定假日

* @date Created in 21:03 2019/1/31

**/

public boolean isLawHoliday(String calendar) throws Exception {

ChineseCalendarUtils.isvaliddate(calendar);

if (lawHolidays.contains(calendar)) {

return true;

}

return false;

}

/**

* @author qyw

* @description 判断是否是周末

* @date Created in 21:03 2019/1/31

**/

public boolean isWeekends(String calendar) throws Exception {

ChineseCalendarUtils.isValidDate(calendar);

// 先将字符串类型的日期转换为Calendar类型

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date = sdf.parse(calendar);

Calendar ca = Calendar.getinstance();

ca.setTime(date);

if (ca.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY

|| ca.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {

return true;

}

return false;

}

/**

* @author qyw

* @description 判断是否是需要额外补班的周末

* @date Created in 21:06 2019/1/31

**/

public boolean isExtraWorkday(String calendar) throws Exception {

ChineseCalendarUtils.isValidDate(calendar);

if (extraWorkdays.contains(calendar)) {

return true;

}

return false;

}

/**

* @author qyw

* @description 判断是否是休息日(包含法定节假日和不需要补班的周末)

* @date Created in 21:06 2019/1/31

**/

public boolean isHoliday(String calendar) throws Exception {

ChineseCalendarUtils.isValidDate(calendar);

// 首先法定节假日必定是休息日

if (this.isLawHoliday(calendar)) {

return true;

}

// 排除法定节假日外的非周末必定是工作日

if (!this.isWeekends(calendar)) {

return false;

}

// 所有周末中只有非补班的才是休息日

if (this.isExtraWorkday(calendar)) {

return false;

}

return true;

}

/**

* @author qyw

* @description 校验字符串是否为指定的日期格式,含逻辑严格校验,2007/02/30返回false

* @date Created in 21:06 2019/1/31

**/

private static boolean isValidDate(String str) {

boolean convertSuccess = true;

// 指定日期格式为四位年/两位月份/两位日期,注意yyyy-MM-dd区分大小写;

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

try {

// 设置lenient为false.

// 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01

format.setLenient(false);

format.parse(str);

} catch (ParseException e) {

convertSuccess = false;

}

return convertSuccess;

}

public static void main(String[] args) throws Exception {

String calendar = "2018-01-32";

ChineseCalendarUtils cc = new ChineseCalendarUtils();

System.out.println("输入的calendar是否是指定要求的格式:"+ChineseCalendarUtils.isValidDate(calendar));

System.out.println("是否是法定节假日:" + cc.isLawHoliday(calendar));

System.out.println("是否是周末:" + cc.isWeekends(calendar));

System.out.println("是否是需要额外补班的周末:" + cc.isExtraWorkday(calendar));

System.out.println("是否是休息日:" + cc.isHoliday(calendar));

}

}

相关阅读

通过前面的文章,我们知道String类最大的特点是不可变性,这意味着对String类的任何修改都会新生成一个字符串,比如你执行了String类的

Java递归函数递归:方法自己调用自己实现递归的三要素1.方法中出现自己调用自己2.要有分支3.要有结束条件

//求5的阶乘public class

在使用springcloud的时候运行报这个错,原因是版本冲突导致的,在idea中创建springcloud项目的时候,这里默认是${spring-cloud.vers

简介栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行

1、首先谈谈为什么要序列化对象 - 把对象转换为字节序列的过程称为对象的序列化。

- 把字节序列恢复为对象的过程称为对

java节假日算法_「国家法定节假日」java 国家法定节假日和双休日判断工具类 - seo实验室...相关推荐

  1. java query接口_「软帝学院」Java零基础学习详解

    软帝学院笔记Day26 01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实 ...

  2. js生日计算年龄_「周岁怎么算」【js】根据出生日期,计算周岁年龄 - seo实验室...

    周岁怎么算 /*根据出生日期算出年龄*/ function jsGetAge(strBirthday) { var returnAge; var strBirthdayArr = strBirthda ...

  3. mysql against 中文_「against的用法」Mysql全文搜索之MATCH...AGAINST的用法介绍 - seo实验室...

    against的用法 前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar ...

  4. python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...

    上位机软件 本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件.数据上 ...

  5. x201换风扇_「x201拆机」联想 Thinkpad x201i怎么拆机清理风扇灰尘? - seo实验室

    x201拆机 笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果.因此有必要对其清理.要彻底清理风扇灰尘,需要拆机方可. 首先要把笔记本的电池取下. 电池取下后,我们就可以开始 ...

  6. java 国家法定节假日和双休日判断工具类

    package com.date.dateutil;import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  7. java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程

    java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...

  8. boolean类型默认值_「软帝学院」Java的基本数据类型

    Java的基本数据类型 Java的两大数据类型: · 内置数据类型 · 引用数据类型 内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型 ...

  9. java 概率 算法_使用概率算法优化快速排序(JAVA)

    前言 前面一篇文章系统介绍了快速排序算法,提到快速排序虽然平均时间复杂度为o(n*log2(n)),效率相对比较高.但是其在特殊情况下,比如降序的情况下,效率和冒泡排序一致,这就削弱了快速排序给人的好 ...

最新文章

  1. CVPR2020论文解读:3D Object Detection三维目标检测
  2. 你还在这样学习Python吗?真的不可以
  3. html5在线api,HTML5 历史记录API
  4. linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久
  5. sql截去最后一位_sql 取最后一条记录
  6. 手把手教你从Core Data迁移到Realm
  7. ajax 12301 原因小结
  8. mysql 5.7.17 x86_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
  9. 1 python简介与安装
  10. 【渝粤教育】国家开放大学2018年秋季 2409T中国古代文学(B)(1) 参考试题
  11. centos Install Docker
  12. mysql 事物状态有几种_关于MySQL的二十个经典面试题
  13. 嵌入式开发比单片机开发难?
  14. 主动微波遥感的测量原理
  15. 如何复制网页上不能复制的文字——三种解决方案
  16. 迪拜政府和当地银行合作推出基于区块链的贷款平台
  17. 阿里云对象存储OSS中上传的资源在生成URL链接时直接在浏览器中打开而不是下载的问题解决方法
  18. [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space
  19. 资源管理Placement部署(Nova)
  20. 百度地图api根据详细地址反查坐标

热门文章

  1. Yourkit 监控Jetty(stand-alone)
  2. 教你利用阿里云服务器搭建一个随时随地的Web IDE
  3. 计算机专业综合素质试题答案,综合素质试题
  4. 综合素质计算机的知识考点,综合素质考点知识
  5. linux搭建声纹识别,声纹识别SDK-FreeSR
  6. 大数据行业前景_大数据未来展望
  7. 微信小程序实例:开发showToast消息提示接口
  8. 【Vue教程】01:入门前的概述:关于VUE那些事儿
  9. 灵飞经3 印神无双 第十四章 印神古墓 3
  10. WPS下级标题不根据上级标题的编号改变而改变解决办法