/**

* 日期工具类 用于获取指定月份的工作日(除去周末和法定节假日)

*/

public class DateUtils {

public static void main(String[] args) {

// 获取工作日集合(排除周末)

List workDays = getWorkDays(2020, 4);

// 获取工作日字符串集合

List dateString = getDateString(workDays);

// 获取法定节假日集合

List holidays = getHolidays();

// 从工作日中除去法定节假日

dateString.removeAll(holidays);

System.out.println(dateString.size());

// 遍历纯工作日集合

for (String date : dateString){

System.out.println(date);

}

}

// 返回工作日集合,只排除周末

public static List getWorkDays(int year, int month){

// 用于储存每月工作日

List dates = new ArrayList();

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 getDateString(List dateList){

// 储存日期字符串

List 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 getHolidays(){

List 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 查询指定月份的工作日(不包括法定节假日)相关推荐

  1. Oracle查询指定月份有多少天

    0.码仙励志 学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来. 1.Oracle查询指定月份有多少天 SELECT TO_CHAR(LAST_DAY(TO_DATE('2020-06','yyyy-M ...

  2. java判断 图片_java判断是否为图片的步骤和方法

    小编今天看到有个小伙伴问java如何判断上传的东西是否是图片,刚好小编有时间就给小伙伴解决一下如何判断的方法. 1.打开Eclipse,在项目工程一栏,也就是左边这一栏的空白处右击鼠标, 选择new- ...

  3. java 判断当天_java判断一个时间是否是今天的方法

    java判断时间是否是今天:public class Test { /** * java 判断一个时间是不是今天的时间范围内 * @param args */ public static void m ...

  4. java 判断用户名_java判断用户名和密码的方法

    java判断用户名和密码的方法 发布时间:2020-04-28 11:18:51 来源:亿速云 阅读:122 作者:小新 今天小编给大家分享的是java判断用户名和密码的方法,相信很多人都不太了解,为 ...

  5. mysql提取身份证生日并查询指定月份的数据

    根据身份证提取生日: SELECT CAST(SUBSTRING(身份证号码,7,8) AS DATE) as 年份, FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(SUBSTR ...

  6. java判断或_Java判断用户名和密码是否符合要求过程详解

    这篇文章主要介绍了Java判断用户名和密码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 假设在某仓库管理系统的登录界面中需要输入用户名和密 ...

  7. java判断文件格式_java判断检验各种文件类型,如gz、txt等

    java判断检验各种文件类型,通过读取文件头(前4位),可判断gz等格式,代码如下: import java.io.FileInputStream; import java.io.IOExceptio ...

  8. java判断质数_Java判断素数

    Java判断素数 public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.p ...

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

    一.开发背景: 最近在公司开发的系统中,需要计算工作日,就是给出一个采购周期(n天),我需要计算出在n个工作日之后的日期.开始准备去调接口(ps:找了半天发现没有太合适的,还有吐槽下国家政府单位都没有 ...

最新文章

  1. [leetcode] Minimum Path Sum
  2. 泪目!兰大硕导的《致谢》火了:我从来不曾优秀过,也从来不曾放弃过!
  3. Issue 140: Tweet
  4. 最近学习linux-c的编程
  5. 关于机器学习的一些感想
  6. 司爱侠计算机英语教程第五版翻译,计算机英语教程 教学课件 作者 司爱侠 张强华 参考译文.doc...
  7. sql中in与php数组,格式化SQL“IN”子句的PHP数组
  8. WordPress5.7版本下载及更新内容
  9. IOS程序中打开自己的程序,测试机器中是否装了自己的程序(openURL:,canOpenURL:)
  10. 2016-11-15NOIP模拟赛
  11. matlab单位采样序列程序,matlab产生pn序列
  12. jquery第三章练习三(制作京东常见问题分类页面)
  13. pr cc 2018的快捷键整理
  14. 参考文献类型标识码--中英文对照
  15. 微信视频号如何申请认证,流程是什么?
  16. 德鲁克谈《自我管理》——《哈佛商业评论》史上最受欢迎的文章
  17. 几行代码,复杂Excel 导入导出,真心强大!
  18. 都说建议新手用3Dmax,那到底学好3Dmax要多久呢?
  19. 什么是CC攻击?CC攻击的防御措施有哪些?
  20. 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

热门文章

  1. 用户体验思考与flex三坑:元素不均分、溢出不省略和垂直不滚动
  2. Latex脚注加超链接
  3. GitHub入门:github查看项目的历史版本,并实现版本的回滚(网页版)
  4. gridlayout计算器java_java新手编写亲戚计算器求助
  5. 博尔德大学计算机专业本科,2020美国大学计算机专业本科排名
  6. isosurface matlab,matlab isosurface
  7. 五子棋对弈(Socket--【服务器】--联机)
  8. RTSP视频边缘计算网关EasyNVR在5G时代有什么运用价值?
  9. Rails博客软件 Enki
  10. 工作流模式的学习与总结