Java中判断某个日期是否在某两个日期区间内
//日期区间判定可以使用Joda的Interval类
//计算特定日期是否在该区间内 [左闭右开区间,首包含尾不包含]参考contains源码的方法说明
Interval interval = new Interval(begin, end);
boolean contained = i.contains(new DateTime(“2012-03-01 12:00:00”));
* For example:
*
* [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)Java原生Date API实现[Java8对日期API进行的增强,没研究,Joda就可以了,已经很强了]:
if (vopSkuHybrisModel.getStartDateTime().after(vopSkuHybrisModel.getEndDateTime()))
{
throw new InterceptorException(“Error Info:The same VOP SKU Code starting time should be before the end time.”);
}final List
vopSkuHybrisModelList = vopSkuHybrisService.getByVpCode(vopSkuHybrisModel.getVopSkuCode()); 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 Info:The same VOP SKU Code starting time should be before the end time.”);
}
}
}上面的条件判断,可以换种思路,就是找反面
if (!((vopSkuHybrisModel.getStartDateTime().befor(vpInDB.getStartDateTime()) ||
(vopSkuHybrisModel.getEndDateTime().after(vpInDB.getEndDateTime())))
********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************
还没有评论,来说两句吧...