天天看點

Java中兩個時間點的相隔天數和相差天數解析

咋一看“相隔天數”和“相差天數”,似乎好像大概沒有什麼差別,但是仔細琢磨一下,這兩個名詞是有差別的。

相差天數

通常我們在項目開發中需要用到有關時間的計算問題,如:計算兩個日期之間相差的天數。

public int getDays(Date start, Date end) {
    return (int) ((end.getTime() - start.getTime()) /  /  /  / );
}
           

上面的計算可以計算出兩個日期的相差的天數,這并沒有錯。那就讓我們看看相隔天數究竟是什麼意思?

相隔天數

隻要兩個日期在同一天,那相隔天數就是0,不在同一天,相隔天數就不是0。比如:

2017-02-16 23:59:59 和 2017-02-17 00:00:00

相差天數為0,但相隔天數為1

實作代碼:

方法一:

public int getDays(Date start, Date end) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(start);
//日期start 在本年中的第幾天
int day1 = calendar.get(Calendar.DAY_OF_YEAR);

aCalendar.setTime(oDate);
//日期end 在本年中的第幾天
int day2 = calendar.get(Calendar.DAY_OF_YEAR);

return day2 - day1;
           

}

注意:方法一當跨年的時候會有問題,即兩個日期不在同一年。

方法二:

public int getDays(Date start, Date end) {

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

   return (df.parse(df.format(end)).getTime() -df.parse(df.format(start)).getTime()) / ( *  *  * );

}
           

是以,是選擇“相隔天數”還是“相差天數”,具體要看我們的實際需求是什麼了。