Java中判断某个日期是否在某两个日期区间内

你的名字 2022-03-02 11:58 2536阅读 0赞

//日期区间判定可以使用Joda的Interval类
//计算特定日期是否在该区间内 [左闭右开区间,首包含尾不包含]参考contains源码的方法说明
Interval interval = new Interval(begin, end);
boolean contained = i.contains(new DateTime(“2012-03-01 12:00:00”));

* For example:
*


  1. * [09:00 to 10:00) contains 08:59 = false (before start)
    * [09:00 to 10:00) contains 09:00 = true
    * [09:00 to 10:00) contains 09:59 = true
    * [09:00 to 10:00) contains 10:00 = false (equals end)
    * [09:00 to 10:00) contains 10:01 = false (after end)
    *
    * [14:00 to 14:00) contains 14:00 = false (zero duration contains nothing)

  2. Java原生Date API实现[Java8对日期API进行的增强,没研究,Joda就可以了,已经很强了]:
    if (vopSkuHybrisModel.getStartDateTime().after(vopSkuHybrisModel.getEndDateTime()))
    {
    throw new InterceptorException(“Error InfoThe same VOP SKU Code starting time should be before the end time.”);
    }

  3. final List vopSkuHybrisModelList = vopSkuHybrisService.getByVpCode(vopSkuHybrisModel.getVopSkuCode());

  4. if (CollectionUtils.isNotEmpty(vopSkuHybrisModelList))
    {
    for (final VopSkuHybrisModel vpInDB : vopSkuHybrisModelList)
    {
    if (vpInDB.getPk().equals(vopSkuHybrisModel.getPk()))
    {
    continue;
    }
    // 左闭右闭区间
    if ((vopSkuHybrisModel.getStartDateTime().after(vpInDB.getStartDateTime())
    && vopSkuHybrisModel.getStartDateTime().before(vpInDB.getEndDateTime()))
    || (vopSkuHybrisModel.getEndDateTime().after(vpInDB.getStartDateTime())
    && vopSkuHybrisModel.getEndDateTime().before(vpInDB.getEndDateTime()))
    || vpInDB.getEndDateTime().after(vopSkuHybrisModel.getStartDateTime())
    && vpInDB.getEndDateTime().before(vopSkuHybrisModel.getEndDateTime())
    || (vpInDB.getStartDateTime().after(vopSkuHybrisModel.getStartDateTime())
    && vpInDB.getStartDateTime().before(vopSkuHybrisModel.getEndDateTime())))
    {
    throw new InterceptorException(“Error InfoThe same VOP SKU Code starting time should be before the end time.”);
    }
    }
    }

  5. 上面的条件判断,可以换种思路,就是找反面

  6. if (!((vopSkuHybrisModel.getStartDateTime().befor(vpInDB.getStartDateTime()) ||

  7. (vopSkuHybrisModel.getEndDateTime().after(vpInDB.getEndDateTime())))

  8. ********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************

发表评论

表情:
评论列表 (有 0 条评论,2536人围观)

还没有评论,来说两句吧...

相关阅读