Java計算兩個時間的天數差與月數差 LocalDateTime


 /**
  * 計算兩個時間點的天數差
  * @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
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM