Java计算时间差,距结束还有几天几小时几分钟

1、写法

//静态方法,传入年月日时分秒
LocalDateTime startTime = LocalDateTime.of(2023, 11, 22, 15, 09, 59);
LocalDateTime endTime = LocalDateTime.of(2023, 11, 30, 0, 0, 0);
//计算差值
Duration duration = Duration.between(startTime, endTime);
//差几天
long days = duration.toDays();
//差多少小时
long hours = duration.toHours();
//分钟
long minutes = duration.toMinutes();
//秒
long seconds = duration.toSeconds();
//毫秒
long millis = duration.toMillis();
//纳秒
long nanos = duration.toNanos();

注意:

  • 上面的toHours()方法返回的是时间差全部换算为小时的数值,而不时去掉整天以后的整小时,想获得后者,应该调用toHoursPart()方法
  • 计算结果可能为负值

PS:上面用到的LocalDateTime的of方法源码:

在这里插入图片描述

2、备份

备份下需求里写的一部分代码,以后好直接copy。需求部分UI:

在这里插入图片描述

该字段的后端处理:

/**
 * 计算时间差
 * 传入LocalDate,即年月日
 * 返回距离当前还有几天几小时几分钟
 * 结果为负数时,返回已过期
*/
public static String calcTimeliness(LocalDate timeliness) {
	//年月日转年月日0时0分0秒
	LocalDateTime timeDeadLine = timeliness.atTime(0, 0, 0);
	//起始时间
	LocalDateTime now = LocalDateTime.now();
	Duration duration = Duration.between(now, timeDeadLine);
	long days = duration.toDays();
	int hours = duration.toHoursPart();
	long minutes = duration.toMinutesPart();
	if (days < 0 || hours < 0 || minutes < 0) {
	    return StatusEnum.EXPIRED.getName();  //已过期
	}
	return days + "天" + hours + "小时" + minutes + "分";

}

3、LocalDate、LocalDateTime、Date、String互转

用的时候查吧,整理也没用,记不住也不用记。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-代号9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值