1. 程式人生 > >Jode-Time計算2個時間段的交叉時間

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();
        }
        
    }

}