最近一些需求有对多个时间区间进行判断,例如交集之类的,而2个时间区间可以多达13种情况,实现起来特别容易绕晕,正好找到这样一个工具类可以满足需求,只需要一个方法便可计算出结果,很方便。ThreeTen 的设计里面 Instant 表示时间点,Interval 表示时间段,使用Interval即可对区间进行判断。

ThreeTen Extra 时间日期处理利器_官网

  例如:判断是否有交集(Overlaps)


​Instant startA = Instant.parse(​​​​"2018-08-01T00:00:00Z"​​​​);​

​Instant stopA = Instant.parse(​​​​"2018-08-10T00:00:00Z"​​​​);​

​Instant startB = Instant.parse(​​​​"2018-07-30T00:00:00Z"​​​​);​

​Instant stopB = Instant.parse(​​​​"2018-08-02T00:00:00Z"​​​​);​

 

​Interval areaA = Interval.of(startA, stopA);​

​Interval areaB = Interval.of(startB, stopB);​

​boolean​​​ ​​flag1 = areaA.overlaps(areaB);​


  同样的,还有是否邻接、包含、相等、之前,之后等等。当然,除了Interval,还有别的类可以用,非常强大。官方文档也非常详细。

  官网链接:​​https://www.threeten.org/threeten-extra/index.html​

  Maven


​<​​​​dependency​​​​>​

​<​​​​groupId​​​​>org.threeten</​​​​groupId​​​​>​

​<​​​​artifactId​​​​>threeten-extra</​​​​artifactId​​​​>​

​<​​​​version​​​​>1.4</​​​​version​​​​>​

​</​​​​dependency​​​​>​