java 计算两个日期相差工作日天数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
public class HolidayUtil {
static List<Date> holiday = new ArrayList<>();
static List<Date> extraWorkDay = new ArrayList<>();
public static void init() {
//TODO 从配置文件或者数据库读入
}
/**
* 计算工作日
*/
public static int calWorkingDays(Date startTime, Date endTime) {
int Days = 0;
//从startTime开始循环,若该日期不是节假日或者不是周六日则天数+1
Date flag = startTime;//设置循环开始日期
Calendar cal = Calendar.getInstance();
//循环遍历每个日期
while (flag.compareTo(endTime) != 1) {
cal.setTime(flag);
Boolean workingDay = isWorkingDay(cal.getTime());
if (workingDay) {
//不是节假日或者周末,天数+1
Days = Days + 1;
}
//日期往后加一天
cal.add(Calendar.DAY_OF_MONTH, +1);
flag = cal.getTime();
}
return Days;
}
public static LocalDate DateToLocalDate(Date date) {
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
public static Boolean isWorkingDay(Date date) {
//是否加班日
if (extraWorkDay.contains(date)) {
return true;
}
//是否节假日
if (holiday.contains(date)) {
return false;
}
LocalDate dateTime = HolidayUtil.DateToLocalDate(date);
//如果是1-5表示周一到周五 是工作日
DayOfWeek week = dateTime.getDayOfWeek();
if (week == DayOfWeek.SATURDAY || week == DayOfWeek.SUNDAY) {
return false;
}
return true;
}
public static void main(String[] args) throws ParseException {
init();
String dateStr1 = "2022-05-27";
String dateStr2 = "2022-06-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(dateStr1);
Date date2 = sdf.parse(dateStr2);
System.out.println("工作日:" + calWorkingDays(date1, date2));
}
}
java 计算两个日期相差工作日天数的更多相关文章
- Java 计算两个日期相差的天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- Java计算两个日期相差的天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- java计算两个日期相差多少天
java计算两个日期相差多少天 public class DateUtil{ public static int betweenDays(Date startDate, Date endDate ) ...
- 计算两个日期相差的天数 js php日期 减一年
计算两个日期相差的天数 //sDate1和sDate2是yyyy-MM-dd格式 function dateDiff(sDate1, sDate2) { var aDate, oDate1, oDat ...
- Java函数2:计算两个日期相差的天数
import java.util.Scanner; public class HelloWorld { public static void main(String[] args){ // Scann ...
- Java 计算两个日期相差月数、天数
package com.myjava; import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...
- JAVA 比较两个日期相差的天数
在实际的应用中,我们经常会比较两个日期相差的天数,下面我们通过java方法判断两个日期所差的额天数. 具体内容,请看下面的代码: package com.jd.jr.fclient.test; imp ...
- MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- java计算两个日期之间的天数,排除节假日和周末
如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...
- mysql计算两个日期相差的天数
DATEDIFF() 函数可以返回两个日期之间的天数. 如下: SELECT DATEDIFF('2015-06-29','2015-06-12') AS DiffDate 结果得17 SELECT ...
随机推荐
- 【leetcode】合并 k 个有序链表,我给了面试官这 5 种解法
开胃菜 在进入本节的正题之前,我们先来看一道开胃菜. 题目 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- Swoole从入门到入土(8)——协程初探
这一章节"协程"话题的讨论是为了让我们对之后协程风格服务端有更全面的了解.所以我们需要先一起了解一下什么是协程?协程有什么作用? 当大家第一次看到"协程"这个词 ...
- 玩转C语言:深入理解输入输出函数的奥秘
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 单字符输出函数 在C语言中有一个函数putchar专门负责输出单个字符,其语法如 ...
- 核心MySQL主库优化总结
公司核心主库,在我来公司时是1主5从库(腾讯云RDS),外加7个自建级联从库. 从2020年2月到2021年8月优化总结: 1, 7个自建多级从库,从以前的中转同步改成从一级从库同步,废弃了5个从库 ...
- 掌握云容器网络:何为ipvs
本文分享自华为云社区<[理解云容器网络]2-基础篇-ipvs介绍>,作者: 可以交个朋友. IPVS简介 ipvs是工作在Linux内核态的4层负载均衡:和用户态的负载均衡软件(如ngin ...
- 让 K8s 更简单!8款你不得不知的 AI 工具-Part 2
在 part 1 中,我们探讨了目前比较流行的四种 OpenAI 开源工具.在今天的 part 2 中我们将探究另外三种不同的 OpenAI 开源工具并介绍一些与 Appilot 相关的内容. Kub ...
- 面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉
写在开头 面试官:"我们在Java的集合和数据结构中都离不开比较器,请你聊一聊Comparable 和 Comparator 这两种的区别吧" 内心活动:"上来就这么直接 ...
- 【Android逆向】破解看雪 test1.apk
1. 获取apk,并安装至手机 apk 获取地址: https://www.kanxue.com/work-task_read-800624.htm adb install -t test1.apk ...
- 具备有效期的sessionStorage存储
具备有效期的sessionStorage存储 类方式 // 具备有效期的sessionStorage存储-类方式. class SessionStorageWrapper { // 存储数据到sess ...
- 项目实战:Qt数据分析处理平台(兼容各国产麒麟系统)(文件域字符串解析,上万文件批量导入,折线图、散点图,正态分布图分析处理导出等)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/114710650长期持续带来更多项目与技术分享, ...