Jode-Time計算2個時間段的交叉時間
程式碼片段:
package uuid;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.Interval;
public class TestJodaTime {
public static void main(String[] args) {
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateTime dateTime1;
try {
dateTime1 = new DateTime(s.parseObject("2018-9-10 00:00:00"));
DateTime dateTime2 = new DateTime(s.parseObject("2018-9-11 00:00:00"));
DateTime dateTime3 = new DateTime(s.parseObject("2018-9-10 10:00:00"));
DateTime dateTime4 = new DateTime(s.parseObject("2018-9-13 10:00:00"));
Interval interval = new Interval(dateTime1, dateTime2);
Interval interva2 = new Interval(dateTime3, dateTime4);
Interval between = interva2.overlap(interval);
Duration dur = new Duration(between.getStart(), between.getEnd());
long standardDays = dur.getStandardDays();
long standardHours = dur.getStandardHours();
BigDecimal aa = new BigDecimal(standardHours).divide(new BigDecimal(24),2,BigDecimal.ROUND_DOWN);
System.out.println(standardDays+"+"+standardHours+"+"+aa);
} catch (ParseException e) {
e.printStackTrace();
}
}
}