//可用于考勤节假日,午休,夜班做剔出时间计算

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 时间段重合时间差相关推荐

  1. java里怎么判断时间重合_java 判断两个时间段是否重叠的案例

    最近业务上遇到需要判断两个时间段是否存在重叠的情况,网上找了不少代码.大佬们的思路过于简洁了,有些理解不了.还只是个菜鸟码农,还是多锻炼锻炼自己的思路. 思路很简单:定义一个时间段的概念,既然是时间段 ...

  2. java里的日期时间

    为了更好理解java的日期时间类,在这里我们先介绍一下关于历法.标准时间的一些概念. 历法有很多种,我们大中华上下五千年,自然也有自己的历法,生活中我们通常把自己传统的历法叫做农历,也有人叫它阴历或夏 ...

  3. java获取系统当前时间格式化_java 获取系统当前时间并格式化

    java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有三种 updateTime--2018年7月23日09点32分 ...

  4. java map怎么判断为空_java中如何判断map是否为空

    java中判断map是否为空的方法是:利用isEmpty()函数来判断. (推荐学习:java入门程序) 函数介绍: IsEmpty()是Java中用于判断某种容器是否有元素的系统库函数.如用来判断A ...

  5. java判断时间是否在时间段内_具有C语言基础,利用半年时间学习Java是否够用

    首先,对于具有一定C语言基础的同学来说,利用半年的时间来学习Java会有一个比较系统的学习过程,通常也能够达到实习程序员,或者是助理程序员的水平,然后在技术团队中实践一段时间之后,从事专业开发岗位应该 ...

  6. java里如何求当前年月日_Java获取当前时间年月日的方法

    Java获取当前时间年月日的方法 发布于 2020-8-10| 复制链接 摘记: 本文实例为大家分享了java获取当前时间年月日的具体代码,供大家参考,具体内容如下 ```java import ja ...

  7. java 判断时间合法_java 中 Date 类型快判断日期是否合法.

    // 如果日期不合法,则抛异常 try { String date_str = "5555-22-33"; SimpleDateFormat format=new SimpleDa ...

  8. java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园

    本文是集合各位网友的经典,在加上我的理解,后续会不断完善. 1.java.util.Date类型转换成long类型 java.util.Date dt = new Date(); System.out ...

  9. java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...

    本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...

最新文章

  1. oracle和arcgis优势,Oracle spatial 使用的一些感受
  2. 知识星球!!!!!!
  3. linux异机拷贝,rman恢复异机数据库
  4. c mysql insert语句_MySQL_mysql insert详细讲解,INSERT语法 INSERT [LOW_PRIORITY |DELA - phpStudy...
  5. login控件设置居中
  6. 【机器视觉】 fuzzy_measure_pairs算子
  7. python函数式编程-匿名函数
  8. 在线数理思维教育品牌“火花思维”完成4000万美元C轮融资
  9. 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。
  10. 人脸验证(六)--SphereFace
  11. 注册表修改系统显示时间
  12. 微信小程序的事件大全
  13. 奇计淫巧______bitset优化
  14. Making Pre-trained Language Models Better Few-Shot Learners
  15. 一位架构师用服务打动客户的故事之四
  16. Comparator用法中o1-o2的问题
  17. 通过游戏学java(适合初学者)
  18. matlab subs什么意思,什么是matlab subs函数?
  19. 算法打卡Day16_leetcode _94. 二叉树的中序遍历
  20. 挫败、迷茫、无聊时值得一看的“有点励志的故事和语录”

热门文章

  1. GitHub基础知识
  2. 直线回归和相关------(五)直线回归与相关的内在关系和应用要点(回归系数相关系数关系推导)
  3. 网页中导入特殊字体@font-face属性详解
  4. Java设计模式学习 - 模版方法模式策略模式
  5. C1认证:修改《植物大战僵尸》游戏存档文件
  6. vue 中的 ... (三个点的用法)
  7. 【学习笔记】在线双序列比对工具
  8. 博图编写温度程序_西门子PLC博图V15编写程序
  9. 怎么用win10自带虚拟机
  10. set集合转list集合