計算兩個時間之間相差幾天、月、年
阿新 • • 發佈:2021-06-22
ChronoUnit類
//獲取當前時間(2021-06-22) LocalDate today = LocalDate.now(); //將String轉LocalDateTime DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate collectTimeDate = LocalDate.parse("2021-05-01",df); //判斷相差多少天 log.info("ChronoUnit====相差{}年,相差{}月,相差{}天", ChronoUnit.YEARS.between(collectTimeDate,today), ChronoUnit.MONTHS.between(collectTimeDate,today), ChronoUnit.DAYS.between(collectTimeDate,today));
注意:若呼叫獲取時、分、秒、半天方法皆報錯
結果:
//獲取當前時間(2021-06-22 17:27:03) LocalDateTime today = LocalDateTime.now(); //將String轉LocalDateTime DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime collectTimeDate = LocalDateTime.parse("2021-05-01 16:40:23",df);//判斷相差多少天 log.info("ChronoUnit====相差{}年,相差{}月,相差{}天", ChronoUnit.YEARS.between(collectTimeDate,today), ChronoUnit.MONTHS.between(collectTimeDate,today), ChronoUnit.DAYS.between(collectTimeDate,today)); log.info("ChronoUnit====相差{}小時,相差{}分鐘,相差{}秒", ChronoUnit.HOURS.between(collectTimeDate,today), ChronoUnit.MINUTES.between(collectTimeDate,today), ChronoUnit.SECONDS.between(collectTimeDate,today)); log.info("ChronoUnit====相差{}半天",ChronoUnit.HALF_DAYS.between(collectTimeDate,today));
結果:
Period類
//獲取當前時間(2021-06-22) LocalDate todayDate = LocalDate.now(); //將String轉LocalDateTime DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate lastDate = LocalDate.parse("2021-05-01",dtf); //判斷相差多少天 log.info("Period====相差{}年,相差{}月,相差{}天", Period.between(lastDate,todayDate).getYears(), Period.between(lastDate,todayDate).getMonths(), Period.between(lastDate,todayDate).getDays());
注意:Period.between方法只接收LocalDate型別的傳參
結果:
從結果中可看到,兩個時間本是相差52天,但此處只顯示相差21天;因為此處只用兩者的日相減,不管年份和月份
Duration類
//獲取當前時間(2021-06-22 17:27:03) LocalDateTime currentDate = LocalDateTime.now(); //將String轉LocalDateTime DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime date = LocalDateTime.parse("2021-05-01 16:40:23",formatter); log.info("Duration====相差{}天,相差{}小時,相差{}分鐘", Duration.between(date,currentDate).toDays(), Duration.between(date,currentDate).toHours(), Duration.between(date,currentDate).toMinutes());
結果:
以下這種會報錯:
//獲取當前時間(2021-06-22) LocalDate currentDate = LocalDate.now(); //將String轉LocalDate DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse("2021-05-01",formatter); //判斷相差多少天 log.info("Duration====相差{}天", Duration.between(date,currentDate).toDays());
結果:
綜上,推薦使用ChronoUnit類