文章目录
- 1、写法
- 2、备份
- 3、LocalDate、LocalDateTime、Date、String互转
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互转
用的时候查吧,整理也没用,记不住也不用记。
-
https://blog.csdn.net/weixin_45103793/article/details/117929986
-
https://www.cnblogs.com/CF1314/p/13884530.html