java节假日算法_「国家法定节假日」java 国家法定节假日和双休日判断工具类 - seo实验室...
国家法定节假日
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实验室...相关推荐
- java query接口_「软帝学院」Java零基础学习详解
软帝学院笔记Day26 01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实 ...
- js生日计算年龄_「周岁怎么算」【js】根据出生日期,计算周岁年龄 - seo实验室...
周岁怎么算 /*根据出生日期算出年龄*/ function jsGetAge(strBirthday) { var returnAge; var strBirthdayArr = strBirthda ...
- mysql against 中文_「against的用法」Mysql全文搜索之MATCH...AGAINST的用法介绍 - seo实验室...
against的用法 前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar ...
- python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...
上位机软件 本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件.数据上 ...
- x201换风扇_「x201拆机」联想 Thinkpad x201i怎么拆机清理风扇灰尘? - seo实验室
x201拆机 笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果.因此有必要对其清理.要彻底清理风扇灰尘,需要拆机方可. 首先要把笔记本的电池取下. 电池取下后,我们就可以开始 ...
- java 国家法定节假日和双休日判断工具类
package com.date.dateutil;import java.text.ParseException; import java.text.SimpleDateFormat; import ...
- java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程
java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...
- boolean类型默认值_「软帝学院」Java的基本数据类型
Java的基本数据类型 Java的两大数据类型: · 内置数据类型 · 引用数据类型 内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型 ...
- java 概率 算法_使用概率算法优化快速排序(JAVA)
前言 前面一篇文章系统介绍了快速排序算法,提到快速排序虽然平均时间复杂度为o(n*log2(n)),效率相对比较高.但是其在特殊情况下,比如降序的情况下,效率和冒泡排序一致,这就削弱了快速排序给人的好 ...
最新文章
- CVPR2020论文解读:3D Object Detection三维目标检测
- 你还在这样学习Python吗?真的不可以
- html5在线api,HTML5 历史记录API
- linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久
- sql截去最后一位_sql 取最后一条记录
- 手把手教你从Core Data迁移到Realm
- ajax 12301 原因小结
- mysql 5.7.17 x86_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
- 1 python简介与安装
- 【渝粤教育】国家开放大学2018年秋季 2409T中国古代文学(B)(1) 参考试题
- centos Install Docker
- mysql 事物状态有几种_关于MySQL的二十个经典面试题
- 嵌入式开发比单片机开发难?
- 主动微波遥感的测量原理
- 如何复制网页上不能复制的文字——三种解决方案
- 迪拜政府和当地银行合作推出基于区块链的贷款平台
- 阿里云对象存储OSS中上传的资源在生成URL链接时直接在浏览器中打开而不是下载的问题解决方法
- [读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space
- 资源管理Placement部署(Nova)
- 百度地图api根据详细地址反查坐标