java 查询指定月份的工作日(不包括法定节假日)
/**
* 日期工具类 用于获取指定月份的工作日(除去周末和法定节假日)
*/
public class DateUtils {
public static void main(String[] args) {
// 获取工作日集合(排除周末)
List<Date> workDays = getWorkDays(2020, 4);
// 获取工作日字符串集合
List<String> dateString = getDateString(workDays);
// 获取法定节假日集合
List<String> holidays = getHolidays();
// 从工作日中除去法定节假日
dateString.removeAll(holidays);
System.out.println(dateString.size());
// 遍历纯工作日集合
for (String date : dateString){
System.out.println(date);
}
}
// 返回工作日集合,只排除周末
public static List<Date> getWorkDays(int year, int month){
// 用于储存每月工作日
List<Date> dates = new ArrayList<Date>();
Calendar cal = Calendar.getInstance();
//设置月份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, month - 1);
// 设置为当月第一天
cal.set(Calendar.DATE, 1);
while(cal.get(Calendar.YEAR) == year && cal.get(Calendar.MONTH) < month){
// 判断当前天为本周的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 如果不为周六或者周天,将日期进行储存
if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
dates.add((Date)cal.getTime().clone());
}
// 将当前日期增加一天
cal.add(Calendar.DATE, 1);
}
// 返回当前月工作日集合
return dates;
}
/**
*
* @param dateList
* @return 返回日期字符串集合
*/
public static List<String> getDateString(List<Date> dateList){
// 储存日期字符串
List<String> dateString = new ArrayList<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
for (Date date : dateList){
String date2 = simpleDateFormat.format(date);
dateString.add(date2);
}
return dateString;
}
/**
*
* @return 返回法定节假日集合
*/
public static List<String> getHolidays(){
List<String> holidays = new ArrayList<>();
holidays.add("2019-01-01");
holidays.add("2019-01-14");
holidays.add("2019-02-11");
holidays.add("2019-03-21");
holidays.add("2019-04-29");
holidays.add("2019-04-30");
holidays.add("2019-05-01");
holidays.add("2019-05-02");
holidays.add("2019-05-03");
holidays.add("2019-05-04");
holidays.add("2019-05-05");
holidays.add("2019-05-06");
holidays.add("2019-07-15");
holidays.add("2019-08-11");
holidays.add("2019-08-12");
holidays.add("2019-09-16");
holidays.add("2019-09-23");
holidays.add("2019-10-14");
holidays.add("2019-10-22");
holidays.add("2019-11-03");
holidays.add("2019-11-04");
holidays.add("2019-11-23");
return holidays;
}
}
java 查询指定月份的工作日(不包括法定节假日)的更多相关文章
- JAVA 打印指定月份日历
package learnExercise; import java.util.Scanner; public class PrintCalender { /** * @param args */ p ...
- java获取指定月份有几个星期x,获取指定月份跨了多少个星期
例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ...
- C#实现工作日和休息日(包括法定节假日)的计算
转自:http://www.cnblogs.com/yuan-chong/p/HolidayHelper.html 一.开发背景: 最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天) ...
- sql语句查询指定月份数据
要求:查询出emp表中1981年2月份入职的员工 emp表 常用的两种方式: 1.YEAR查询年,MONTH查询月 SELECT * FROM emp WHERE ' 2.date_format (使 ...
- oracle查询指定月份数据
SELECT * FROM [表名] where to_number(to_char([表中日期字段],'mm')) = [要查找的月份]
- java编程基础篇-------> 从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度。如果是 12 月、1 月、2 月,就属于冬季。
从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度.如果是 12月.1 月.2 月,就属于冬季:如果是 3 月.4 月.5 月,就属于春季:如果是 6 月.7 月.8 月,就属于夏季: ...
- PHP中查询指定时间范围内的所有日期,月份,季度,年份
/** * 查询指定时间范围内的所有日期,月份,季度,年份 * * @param $startDate 指定开始时间,Y-m-d格式 * @param $endDate 指定结束时间,Y-m-d格式 ...
- HBase的java操作,最新API。(查询指定行、列、插入数据等)
关于HBase环境搭建和HBase的原理架构,请见笔者相关博客. 1.HBase对java有着较优秀的支持,本文将介绍如何使用java操作Hbase. 首先是pom依赖: <dependency ...
- Java判断指定日期是否为工作日
Java判断指定日期是否为工作日 转自:https://www.jianshu.com/p/966659492f2f 转:https://www.jianshu.com/p/05ccb5783f65转 ...
随机推荐
- liunx常用知识基本命令大全
liunx基础命令使用 标签(空格分隔):liunx常用命令 网络配置 虚拟网卡的绝对路径 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ...
- 大部分人都不知道的8个python神操作
01 print 打印带有颜色的信息 大家知道 Python 中的信息打印函数 Print,一般我们会使用它打印一些东西,作为一个简单调试. 但是你知道么,这个 Print 打印出来的字体颜色是可以设 ...
- [wp]xctf newscenter
手工注入 查询所有数据库名称和表名 ' union select 1,table_schema,table_name from information_schema.tables# 发现就两个数据库i ...
- 0day堆(1)堆的管理策略
基本概念 堆块:堆区内存的基本单位 包括两个部分:块首,块身 块首:标识这个堆块自身的信息:如大小,是否被占用等 块身:分配给用户使用的数据区 堆表:一般位于堆区的起始位置,用于索引堆区所有堆块的信息 ...
- 打印js对象内容
function writeObj(obj){ var description = ""; for(var i in obj){ var property=obj[i]; desc ...
- BareTail 观看文件增加的工具
- 消息中间件metaq
消息中间件metaq安装并注册到zookper集群 项目地址 https://github.com/killme2008/Metamorphosis Memorphosis是一个消息中间件,它是lin ...
- JVM原理与深度调优(一)
什么是jvm jvm是java虚拟机 运行在用户态.通过应用程序实现java代码跨平台.与平台无关.实际上是"一次编译,到处执行" 1.从微观来说编译出来的是字节码!去到哪个平台都 ...
- Java第一阶段作业总结
目录 0.前言 1.作业过程总结 2.OO设计心得 3.测试的理解与实践 4.课程收获 5.对课程的建议 前言 本次博客针对第一阶段的三次作业发表总结,作业要求主要是初学者对于Java的基本语法.用法 ...
- thymeleaf 模板语法
模板语法 如何在 script 标签体内部使用 th 获取后端数据 添加如下属性 <script type="text/javascript" th:inline=" ...