java里怎么判断时间重合_java 时间段重合时间差
//可用于考勤节假日,午休,夜班做剔出时间计算
package test;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
/**
* 这里共有2个时间段(b1-----e1)【b2-----e2】,4个时间点;
*相当于两条线段(b代表起点,e代表端点,b<=e),4个端点。
*
*可分3种情况:
*1.包含(两条)
*(b1---【b2-----e2】--e1) if(b1<=b2 && e1>=e2)
*【b2---(b1-----e1)--e2】 if(b1>=b2&&e1<=e2)
*
*2.相交(两条)
*(b1---【b2---e1)----e2】 if(b1b2)
*【b2---(b1---e2】----e1) if(b1>b2&&b1
*
*3.不相交
*(b1-----e1)【b2-----e2】或【b2-----e2】(b1-----e1)if(e1e2)此时,重合时间数为零。
* @param beginTime1
* @param endTime1
* @param beginTime2
* @param endTime2
* @return
*/
public static String getTimeCoincidence(Date beginTime1,Date endTime1,Date beginTime2,Date endTime2){
long b1 = beginTime1.getTime();
long e1 = endTime1.getTime();
long b2 = beginTime2.getTime();
long e2 = endTime2.getTime();
String coincidenceTime;
if(b1<=b2&&e1>=e2){//(b1---【b2-----e2】--e1)1包含2
System.out.println("1包含2");
coincidenceTime=getTimeDifference(endTime2,beginTime2);
}else if(b1>=b2&&e1<=e2){//【b2---(b1-----e1)--e2】2包含1
System.out.println("2包含1");
coincidenceTime=getTimeDifference(endTime1,beginTime1);
}else if(b1>=b2&&b1<=e2&&e2<=e1){//(b1---【b2---e1)----e2】 相交1
System.out.println("相交");
coincidenceTime=getTimeDifference(endTime2,beginTime1);
}else if(b1<=b2&&e1<=e2&&e1>=b2){//【b2---(b1---e2】----e1) 相交2
System.out.println("相交");
coincidenceTime=getTimeDifference(endTime1,beginTime2);
}else if(e1<=b2||b1>=e2){//(b1-----e1)【b2-----e2】或【b2-----e2】(b1-----e1)不相交
coincidenceTime="0";
}else{
coincidenceTime="";
System.out.println("意料外的日期组合,无法计算重合!");
}
System.out.println("重合天数为["+coincidenceTime+"]分。");
return coincidenceTime;
}
/**
* 计算两个时间差
* @param date1
* @param date2
* @return
*/
public static String getTimeDifference(Date date1,Date date2){
StringBuffer df = new StringBuffer();
try{
//计算单位设置(毫秒1000 * 秒60 * 分60 * 时24);
long num = (date1.getTime()-date2.getTime())/(1000*60);
if(num>=0)
df.append(num);
}catch(Exception e){
e.printStackTrace();
}
return df.toString();
}
/**
* 字符串转时间格式
* @param date
* @return
*/
public static Date stringToDate(String date){
if(date==null){return null;}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition pos = new ParsePosition(0);
Date strtodate = format.parse(date,pos);
return strtodate;
}
public static void main(String[] args) {
Date beginTime1 = stringToDate("2013-01-01 22:00:00");
Date endTime1 = stringToDate("2013-01-02 08:30:00");;
Date beginTime2 = stringToDate("2013-01-02 00:00:00");
Date endTime2 = stringToDate("2013-01-02 02:30:00");
System.out.println(getTimeCoincidence(beginTime1, endTime1, beginTime2, endTime2));
}
}
java里怎么判断时间重合_java 时间段重合时间差相关推荐
- java里怎么判断时间重合_java 判断两个时间段是否重叠的案例
最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找了不少代码.大佬们的思路过于简洁了,有些理解不了.还只是个菜鸟码农,还是多锻炼锻炼自己的思路. 思路很简单:定义一个时间段的概念,既然是时间段 ...
- java里的日期时间
为了更好理解java的日期时间类,在这里我们先介绍一下关于历法.标准时间的一些概念. 历法有很多种,我们大中华上下五千年,自然也有自己的历法,生活中我们通常把自己传统的历法叫做农历,也有人叫它阴历或夏 ...
- java获取系统当前时间格式化_java 获取系统当前时间并格式化
java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32分 ...
- java map怎么判断为空_java中如何判断map是否为空
java中判断map是否为空的方法是:利用isEmpty()函数来判断. (推荐学习:java入门程序) 函数介绍: IsEmpty()是Java中用于判断某种容器是否有元素的系统库函数.如用来判断A ...
- java判断时间是否在时间段内_具有C语言基础,利用半年时间学习Java是否够用
首先,对于具有一定C语言基础的同学来说,利用半年的时间来学习Java会有一个比较系统的学习过程,通常也能够达到实习程序员,或者是助理程序员的水平,然后在技术团队中实践一段时间之后,从事专业开发岗位应该 ...
- java里如何求当前年月日_Java获取当前时间年月日的方法
Java获取当前时间年月日的方法 发布于 2020-8-10| 复制链接 摘记: 本文实例为大家分享了java获取当前时间年月日的具体代码,供大家参考,具体内容如下 ```java import ja ...
- java 判断时间合法_java 中 Date 类型快判断日期是否合法.
// 如果日期不合法,则抛异常 try { String date_str = "5555-22-33"; SimpleDateFormat format=new SimpleDa ...
- java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园
本文是集合各位网友的经典,在加上我的理解,后续会不断完善. 1.java.util.Date类型转换成long类型 java.util.Date dt = new Date(); System.out ...
- java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...
本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...
最新文章
- oracle和arcgis优势,Oracle spatial 使用的一些感受
- 知识星球!!!!!!
- linux异机拷贝,rman恢复异机数据库
- c mysql insert语句_MySQL_mysql insert详细讲解,INSERT语法
INSERT [LOW_PRIORITY |DELA - phpStudy...
- login控件设置居中
- 【机器视觉】 fuzzy_measure_pairs算子
- python函数式编程-匿名函数
- 在线数理思维教育品牌“火花思维”完成4000万美元C轮融资
- 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。
- 人脸验证(六)--SphereFace
- 注册表修改系统显示时间
- 微信小程序的事件大全
- 奇计淫巧______bitset优化
- Making Pre-trained Language Models Better Few-Shot Learners
- 一位架构师用服务打动客户的故事之四
- Comparator用法中o1-o2的问题
- 通过游戏学java(适合初学者)
- matlab subs什么意思,什么是matlab subs函数?
- 算法打卡Day16_leetcode _94. 二叉树的中序遍历
- 挫败、迷茫、无聊时值得一看的“有点励志的故事和语录”