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转 ...
随机推荐
- Java 多线程 -- lambda 表达式推导
jdk 8 开始 java 引入了lambda 表达式. lambda适用场景: 1.接口或父类 2.接口或父类只有一个方法 我们从多线程写法来推导一下: 1.外部类写法: package com.x ...
- socket小计
socket,是一个实现了双向通信的链接. 将http比喻为轿车,承载数据.传递数据,那么socket,就是轿车的发动机,它轿车动起来.
- Unity Procedural Level Generator 基础总结与功能优化
Procedural Level Generator是在Unity应用商店中发布的一款免费的轻量级关卡生成器: 可以直接搜索关键字在应用商店中查找并下载. 和我之前生成关卡的想法不同,这个插件生成地图 ...
- python学习23之标准库
'''''''''标准库1.datetime 日期时间模块存在于Lib/datetime.py文件内'''from datetime import datetime,date,time #from d ...
- 以命令行界面启动 Ubuntu
1. /etc/default/grub 将GRUB_CMDLINE_LINUX_DEFAULT一行中改为"quiet splash 3" 2. update-grub 3. 重启
- css之颜色表示法
css之颜色表示法 十六进制颜色 所有浏览器都支持十六进制颜色值. 十六进制颜色是这样规定的:#RRGGBB,其中的 RR(红色).GG(绿色).BB(蓝色)十六进制整数规定了颜色的成分.所有值必须介 ...
- LightOJ 1287 Where to Run(期望)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1287 题意:给定一个n个点的无向图(0到n-1),你开始在0.你开始遍历这个图 ...
- nginx日志、nginx日志切割、静态文件不记录日志和过期时间
2019独角兽企业重金招聘Python工程师标准>>> 12.10 Nginx访问日志 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索l ...
- 2019年2月5日训练日记关于int字节数,long int 字节数的讨论
今天做到了个非常有意思的题目,是关于int最大最小值.用sizeof(int)查寻,返回四个字节,4个字节计算应该是4*8=32位,其中一位为符号位,且最高为不能为2所以应该减一,2^31-1=214 ...
- POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9974 Accepted: 4307 Special Judg ...