java判断时间段是否交叉重叠

1.需求

要求保存每一条数据的startTime、endTime的中间时间段是唯一的,跟其他数据时间段不能存在冲突

比如: (2019-03-01 -> 2019-03-03 ) (2019-03-02 -> 2019-03-04 ) 这两个时间段存在重叠部分

2.思路

首先,校验前端传的list自身先比较是否有时间冲突;

然后,校验前端List跟数据库存在的list是否有时间冲突;

方法: 两次for循环list实现

2.代码部分

*实体类*

/**
 * @Param:
 * @Description: 实体类
 * @Author: zyf    2019/3/29
 */
class TimeModel {
   
    private Long jobId; //主键
    private Date startTime;//开始时间
    private Date endTime;   //结束时间
    //getter/setter
}

*前端显示日期格式*

public static final String DATE_FORMAT_Y_M_DHM = "yyyy-MM-dd HH:mm"; //比较日期计算到分钟,当然数据库里面存的数据一般精确到秒
// date转String
    public static String dateToStr(Date date) {
   
        String strDate = "";
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_Y_M_DHM);
        strDate = sdf.format(date);
        return strDate;
    }

前端List数据校验(自身)

 /**
     * @Param:
     * @Description: list自身查询有无时间冲突,
     * 优化1: 如果自身的list过大, j遍历不能从0开始,只需要往后面数据比较大小
     * @Author: zyf    2019/3/29
     */
    public static String checkSelf(List<TimeModel> list) {
   
        String res = null;
        if (list.size() == 0) {
   
            return res;
        }
        for (int i = 0; i < list.size(); i++) {
   
            // long I_S = list.get(i).getEffectiveStartTime().getTime();
            // long I_E = list.get(i).getEffectiveEndTime().getTime();
            Date I_S = list.get(i).getStartTime();
            Date I_E = list.get(i).getEndTime();
           // for (int j = 0; j < list.size(); j++) {
   
            for (int j = i+1; j < list.
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值