LocalDate today = LocalDate.now();
//将String转LocalDateTime
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate collectTimeDate = LocalDate.parse("2021-05-01",df);
//判断相差多少天 相差几年,相差几月,相差几天
System.out.println(ChronoUnit.YEARS.between(collectTimeDate,today)+"==="+
ChronoUnit.MONTHS.between(collectTimeDate,today)+"==="+
ChronoUnit.DAYS.between(collectTimeDate,today));
//输出结果:1===16===494
System.out.println("==================");
//获取当前时间(2022-09-07 10:42:03)
LocalDateTime today2 = LocalDateTime.now();
//将String转LocalDateTime
DateTimeFormatter df2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime collectTimeDate2 = LocalDateTime.parse("2021-05-01 16:40:23",df2);
//判断相差多少天 相差几年,相差几月,相差几天
System.out.println(ChronoUnit.YEARS.between(collectTimeDate2,today2)+"==="+
ChronoUnit.MONTHS.between(collectTimeDate2,today2)+"==="+
ChronoUnit.DAYS.between(collectTimeDate2,today2));
//相差几小时,相差几分钟,相差几秒
System.out.println(
ChronoUnit.HOURS.between(collectTimeDate2,today2)+"==="+
ChronoUnit.MINUTES.between(collectTimeDate2,today2)+"==="+
ChronoUnit.SECONDS.between(collectTimeDate2,today2));
//相差多少个半天
System.out.println(ChronoUnit.HALF_DAYS.between(collectTimeDate2,today2));
/*
输出结果:
1===16===493
11850===711006===42660375
987
*/
System.out.println("===============");
LocalDate todayDate = LocalDate.now();
//将String转LocalDateTime
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate lastDate = LocalDate.parse("2021-05-01",dtf);
//判断相差多少天 相差几年,相差几月,相差几天",
System.out.println(
Period.between(lastDate,todayDate).getYears()+"==="+
Period.between(lastDate,todayDate).getMonths()+"==="+
Period.between(lastDate,todayDate).getDays());
//输出结果:1===4===6
System.out.println("===============");
//获取当前时间(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);
System.out.println(
Duration.between(date,currentDate).toDays()+"==="+
Duration.between(date,currentDate).toHours()+"==="+
Duration.between(date,currentDate).toMinutes());
//输出结果:493===11850===711006
注意:Period.between方法只接收LocalDate类型的传参
结果:
从结果中可看到,两个时间相差的月份直接就是月份9-5=4,相差的天数也是7-1=6;因为此处只用两者的日相减,不管年份和月份
我在项目中用的是计算相差年数 :
long between = ChronoUnit.YEARS.between(sTime, eTime); //参数是LocalDateTime类型