计算两个时间的时间差(天、时、分、秒)

计算两个时间的时间差,通过计算得到星期、天、时、分、秒,这种场景多得离谱,一个方法就搞定。百分百可用。
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依赖:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.22</version>
</dependency>

非常好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值