/** * 計算兩個時間點的天數差 * @param dt1 第一個時間點 * @param dt2 第二個時間點 * @return int,即要計算的天數差 */ public static int dateDiff(LocalDateTime dt1,LocalDateTime dt2){ / ...
/**
* 計算兩個時間點的天數差
* @param dt1 第一個時間點
* @param dt2 第二個時間點
* @return int,即要計算的天數差
*/
public static int dateDiff(LocalDateTime dt1,LocalDateTime dt2){
//獲取第一個時間點的時間戳對應的秒數
long t1 = dt1.toEpochSecond(ZoneOffset.ofHours(0));
//獲取第一個時間點在是1970年1月1日後的第幾天
long day1 = t1 /(60*60*24);
//獲取第二個時間點的時間戳對應的秒數
long t2 = dt2.toEpochSecond(ZoneOffset.ofHours(0));
//獲取第二個時間點在是1970年1月1日後的第幾天
long day2 = t2/(60*60*24);
//返回兩個時間點的天數差
return (int)(day2 - day1);
}
@Test
public void testDay(){
LocalDateTime of1 = LocalDateTime.of(2018, 9, 25, 1, 1);//2018-9-25 01:01
LocalDateTime of2 = LocalDateTime.of(2019, 9, 25, 23, 16); //2019-9-25 23:16
System.out.println(dateDiff(of1,of2));//365
}
/**
* 獲取兩個時間點的月份差
* @param dt1 第一個時間點
* @param dt2 第二個時間點
* @return int,即需求的月數差
*/
public static int monthDiff(LocalDateTime dt1,LocalDateTime dt2){
//獲取第一個時間點的月份
int month1 = dt1.getMonthValue();
//獲取第一個時間點的年份
int year1 = dt1.getYear();
//獲取第一個時間點的月份
int month2 = dt2.getMonthValue();
//獲取第一個時間點的年份
int year2 = dt2.getYear();
//返回兩個時間點的月數差
return (year2 - year1) *12 + (month2 - month1);
}
@Test
public void testMonth(){
LocalDateTime of1 = LocalDateTime.of(2018, 9, 25, 1, 1);//2018-9-25 01:01
LocalDateTime of2 = LocalDateTime.of(2019, 9, 25, 23, 16); //2019-9-25 23:16
System.out.println(monthDiff(of1,of2));//12
}