java计算两个时间之间相差几天、月、年


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值