/**
* 日期工具类 用于获取指定月份的工作日(除去周末和法定节假日)
*/
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 查询指定月份的工作日(不包括法定节假日)的更多相关文章

  1. JAVA 打印指定月份日历

    package learnExercise; import java.util.Scanner; public class PrintCalender { /** * @param args */ p ...

  2. java获取指定月份有几个星期x,获取指定月份跨了多少个星期

    例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ...

  3. C#实现工作日和休息日(包括法定节假日)的计算

    转自:http://www.cnblogs.com/yuan-chong/p/HolidayHelper.html 一.开发背景: 最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天) ...

  4. sql语句查询指定月份数据

    要求:查询出emp表中1981年2月份入职的员工 emp表 常用的两种方式: 1.YEAR查询年,MONTH查询月 SELECT * FROM emp WHERE ' 2.date_format (使 ...

  5. oracle查询指定月份数据

    SELECT * FROM [表名]       where  to_number(to_char([表中日期字段],'mm')) = [要查找的月份]

  6. java编程基础篇-------> 从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度。如果是 12 月、1 月、2 月,就属于冬季。

    从键盘输入一位整数,代表月份,编程判断指定月份属于一年中的哪个季度.如果是 12月.1 月.2 月,就属于冬季:如果是 3 月.4 月.5 月,就属于春季:如果是 6 月.7 月.8 月,就属于夏季: ...

  7. PHP中查询指定时间范围内的所有日期,月份,季度,年份

    /** * 查询指定时间范围内的所有日期,月份,季度,年份 * * @param $startDate 指定开始时间,Y-m-d格式 * @param $endDate 指定结束时间,Y-m-d格式 ...

  8. HBase的java操作,最新API。(查询指定行、列、插入数据等)

    关于HBase环境搭建和HBase的原理架构,请见笔者相关博客. 1.HBase对java有着较优秀的支持,本文将介绍如何使用java操作Hbase. 首先是pom依赖: <dependency ...

  9. Java判断指定日期是否为工作日

    Java判断指定日期是否为工作日 转自:https://www.jianshu.com/p/966659492f2f 转:https://www.jianshu.com/p/05ccb5783f65转 ...

随机推荐

  1. python数据分析工具——Pandas、StatsModels、Scikit-Learn

    Pandas Pandas是 Python下最强大的数据分析和探索工具.它包含高级的数据结构和精巧的工具,使得在 Python中处理数据非常快速和简单. Pandas构建在 Numpy之上,它使得以 ...

  2. Mysql中的一些类型

    列类型--整数类型Tinyint:迷你整形 一个字节=8位 最大能表示的数值是0-255 实际区间 -128~127Smallint:小整形 两个字节 能表示0-65535Mediumint:中整型 ...

  3. 数值计算方法实验之newton多项式插值 (Python 代码)

    一.实验目的 在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函 ...

  4. Docker 搭建 ELK 集群步骤

    前言 本篇文章主要介绍在两台机器上使用 Docker 搭建 ELK. 正文 环境 CentOS 7.7 系统 Docker version 19.03.8 docker-compose version ...

  5. 线程Event

    版本一: from threading import Event,current_thread,Thread import time event=Event() #造一个对象,内部维护一个全局变量,状 ...

  6. 好用的反向代理工具NATAPP

    这里推荐一个好用的反向代理工具NATAPP NATAPP1分钟快速新手图文教程 有免费的和付费的个人建议付费的,免费还需要身份证验证,付费版最低9元/月,看个人需求! 这里给个邀请码贴在这需要的话可以 ...

  7. Python flask 构建可扩展的restful ap

    Flask-RESTful是flask的扩展,增加了对快速构建REST API的支持. Flask-RESTful通过最少的设置鼓励最佳的实践. pip install flask-restfulFl ...

  8. Android | 教你如何快速集成机器学习能力

    背景   继上篇博文说了如何快速集成扫码以后 我又上官网去了解了一下其他的功能,其中机器学习服务是当下比较火的,而且还是免费的.就赶紧点进去学习一下.看看能够快速实现哪些功能. 链接在这里:https ...

  9. urlencode()和rawurlencode()区别

    urlencode和rawurlencode两个方法在处理字母数字,特殊符号,中文的时候结果都是一样的 ,唯一的不同是对空格的处理,   urlencode处理成“+”,    rawurlencod ...

  10. ST3 package control

    view-> showconsole    (ctrl+`) import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775 ...