计算两个时间的时间差,通过计算得到星期、天、时、分、秒,这种场景多得离谱,一个方法就搞定。百分百可用。
package com.example.demo16.util;
import cn.hutool.core.date.DateUtil;
import lombok.NonNull;
import java.util.Date;
public class MyDateUtil {
/**
* 计算两个时间的时间差
* @param begin 开始时间
* @param end 结束时间
* @param dateUnit 单位
* @return 根据单位最终得到星期、天、时、分、秒
*/
public static long between(@NonNull Date begin, @NonNull Date end, DateUnit dateUnit) {
long diff = Math.abs(end.getTime() - begin.getTime());
return diff / dateUnit.getMillis();
}
public static void main(String[] args) {
System.out.println("计算两个时间的时间差:");
Date begin = DateUtil.parse("2023-10-02 22:01:00","yyyy-MM-dd HH:mm:ss");
Date end = DateUtil.parse("2023-11-03 23:03:00","yyyy-MM-dd HH:mm:ss");
System.out.print("分钟:");
System.out.println(MyDateUtil.between(begin,end, MyDateUtil.DateUnit.MINUTE));
System.out.print("小时:");
System.out.println(MyDateUtil.between(begin,end, MyDateUtil.DateUnit.HOUR));
System.out.print("天:");
System.out.println(MyDateUtil.between(begin,end, MyDateUtil.DateUnit.DAY));
}
/**
* 时间单位枚举
*/
public enum DateUnit {
/**
* 周 日 时 分 秒的毫秒数
*/
MS(1L),
SECOND(1000L),
MINUTE(SECOND.getMillis() * 60L),
HOUR(MINUTE.getMillis() * 60L),
DAY(HOUR.getMillis() * 24L),
WEEK(DAY.getMillis() * 7L);
DateUnit(long millis) {
this.millis = millis;
}
// 毫秒
private final long millis;
public long getMillis() {
return millis;
}
}
}
其实很多轮子根本不用重复造,推荐一个功能丰富且易用的Java工具库 hutool,一个Java基础工具类,对日期、文件、流、加密解密、转码、正则、线程、XML等等JDK方法进行封装,组成各种Util工具类。
github地址(带文档):GitHub - dromara/hutool: A set of tools that keep Java sweet.
Maven依赖:
cn.hutool
hutool-all
5.8.22
非常好用。