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类型

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐