ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

判断两个时间段是否重叠

2021-01-04 13:01:47  阅读:454  来源: 互联网

标签:07 判断 重叠 04 2020 Date 时间段 LocalDate String


背景

分配工作任务、或者项目申报中,日期相关的一般会有开始时间(startTime),结束时间(endTime)。

有时候需要确认两条数据的时间跨度是否有重叠。

import java.time.LocalDate;

public class TestDuration {
    public static void main(String[] args) {
        String startTime = "2020-04-13";
        String endTime = "2020-07-20";

        String [] testCase = new String[] {
                "2020-04-13","2020-07-20",
                "2020-04-12","2020-07-20",
                "2020-04-12","2020-07-19",
                "2020-04-13","2020-07-20",
                "2020-07-20","2020-07-25",
                "2020-07-19","2020-07-25",
                "2020-01-12","2020-04-13",
                "2020-04-13","2020-04-13",
                //不重复
                "2020-07-21","2020-07-21",
                "2020-07-21","2020-07-25",
                "2020-01-01","2020-04-12"
        };

        for (int i = 0; i < testCase.length; i+=2) {
            boolean matched = match(startTime, endTime, testCase[i], testCase[i + 1]);
            System.out.println("重复申报:"+matched);
        }
    }


    static boolean match(String projectStartTime1, String projectEndTime1,String projectStartTime2,String projectEndTime2)
    {
        LocalDate startTime1 = formatDate(projectStartTime1);
        LocalDate endTime1 = formatDate(projectEndTime1);

        LocalDate startTime2 =formatDate(projectStartTime2);
        LocalDate endTime2 = formatDate(projectEndTime2);
        return !(startTime2.isAfter(endTime1)||startTime1.isAfter(endTime2));
    }
}
public static LocalDate formatDate(String date) {
        return LocalDate.parse(date);
    }

 

   public boolean checkDuplicateApply(Project project)
    {
        Date startTime = project.getProjectStartTime();
        Date endTime = project.getProjectEndTime();

        List<Project> projects = projectMapper.queryList(Collections.singletonMap("projectName",project.getProjectName()));
        for (Project thisProject : projects) {
            if(match(startTime,endTime,thisProject.getProjectStartTime(),thisProject.getProjectEndTime()))
            {
                return false;
            }
        }
        return true;
    }

    private static boolean match(Date projectStartTime1, Date projectEndTime1,Date projectStartTime2,Date projectEndTime2)
    {
        return !(projectStartTime2.after(projectEndTime1)||projectStartTime1.after(projectEndTime2));
    }

 

标签:07,判断,重叠,04,2020,Date,时间段,LocalDate,String
来源: https://www.cnblogs.com/passedbylove/p/14229128.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有