【Hutool系列】计时器工具-TimeInterval

image

前言

  Hutool 提供的日期时间工具类主要有以下几种:

日期时间工具类说明
DateUtil针对日期时间操作提供一系列静态方法
DateTime提供类似于Joda-Time中日期时间对象的封装,继承自Date类,并提供更加丰富的对象方法。
FastDateFormat提供线程安全的针对Date对象的格式化和日期字符串解析支持。
DateBetween计算两个时间间隔的类,除了通过构造新对象使用外,相关操作也已封装在DateUtil和DateTime的相关方法中。
TimeInterval一个简单的计时器类,常用于计算某段代码的执行时间,提供包括毫秒、秒、分、时、天、周等各种单位的花费时长计算。
DatePattern提供常用的日期格式化模式,包括String类型和FastDateFormat两种类型。
Quarter季度枚举
Month月份枚举
Week周枚举
DateUnit时间枚举,要表示某个时间单位对应的毫秒数,常用于计算时间差。

一、概述

1.1 工具简介

  Hutool 是一个 Java 工具包,提供了一些常用的工具类和方法,方便开发者在 Java 开发中使用。其中,TimeInterval 是 Hutool 中的一个类,用于表示时间间隔,可以方便地计算两个时间点之间的差值。Hutool 通过封装 TimeInterval 实现计时器功能,即可以计算方法或过程执行的时间,精确到毫秒或纳秒。TimeInterval 还支持分组计时,方便对比时间。TimeInterval 基本使用如下所示:

TimeInterval timer = DateUtil.timer();
// 花费毫秒数
timer.interval();
// 返回花费时间,并重置开始时间
timer.intervalRestart();
// 花费分钟数
timer.intervalMinute();

1.2 引入依赖

  在使用Hutool工具之前,我们需要将Hutool添加到项目的依赖中。如果使用Maven构建项目,可以在 pom.xml 文件中添加以下依赖:

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>${hutool.version}</version>
</dependency>

  Hutool-all 是一个 Hutool 的集成打包产品,由于考虑到“懒人”用户及分不清各个模块作用的用户,“无脑”引入 hutool-all 模块是快速开始和深入应用的最佳方式。如果你想像 Spring Boot 一样引入 Hutool,再由子模块决定用到哪些模块,你可以在父模块中加入:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-bom</artifactId>
            <version>${hutool.version}</version>
            <type>pom</type>
            <!-- 注意这里是import -->
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

  然后再在子模块中就可以引入自己需要的模块了:

<dependencies>
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-core</artifactId>
    </dependency>
</dependencies>

三、基本使用示例

计时器

创建时间间隔对象

  在使用hutool计时器之前,需要先创建一个计时器对象,可以使用 TimeInterval 类的构造函数来创建时间间隔对象。例如:

方法简要说明
public TimeInterval()构造函数,默认使用毫秒计数
public TimeInterval(boolean isNano)构造函数。isNano - 是否使用纳秒计数,false则使用毫秒
TimeInterval timer()计算某个过程花费的时间,精确到毫秒
TimeInterval timer(boolean isNano)计算某个过程花费的时间,精确到毫秒。isNano - 是否使用纳秒计数

计算时间差值

  hutool 中的 timeinterval 类提供了一种方便的方式来处理时间间隔。通过 timeinterval 类,我们可以轻松地计算两个时间点之间的时间差,以及时间点的具体信息。

方法简要说明
long interval()从开始到当前的间隔时间(毫秒数)
long intervalDay()从开始到当前的间隔天数,取绝对值
long intervalHour()从开始到当前的间隔小时数,取绝对值
long intervalMinute()从开始到当前的间隔分钟数,取绝对值
long intervalMs()从开始到当前的间隔时间(毫秒数)
String intervalPretty()从开始到当前的间隔时间(毫秒数),返回XX天XX小时XX分XX秒XX毫秒
long intervalRestart()重新计时并返回从开始到当前的持续时间
long intervalSecond()从开始到当前的间隔秒数,取绝对值
long intervalWeek()从开始到当前的间隔周数,取绝对值
TimeInterval restart()重新开始计算时间(重置开始时间)
long start()开始计时并返回当前时间
@Test
public void timeIntervalTest() {
    // 创建一个 timeinterval 对象
    TimeInterval timeInterval = new TimeInterval();
    Console.log("从开始到当前的间隔秒数:{}", timeInterval.intervalSecond());
    Console.log("从开始到当前的间隔分钟数:{}", timeInterval.intervalMinute());
    Console.log("从开始到当前的间隔小时数:{}", timeInterval.intervalHour());
    Console.log("起始时间:{}", timeInterval.start());
    Console.log("从开始到当前的间隔时间:{}", timeInterval.intervalPretty());
}

分组计时

初始化

方法简要说明
public GroupTimeInterval(boolean isNano)

其他操作方法

方法简要说明
GroupTimeInterval clear()清空所有定时记录
long interval(String id)从开始到当前的间隔时间(毫秒数),如果分组下没有开始时间,返回null
long interval(String id, DateUnit dateUnit)从开始到当前的间隔时间
long intervalDay(String id)从开始到当前的间隔天数,取绝对值
long intervalHour(String id)从开始到当前的间隔小时数,取绝对值
long intervalMinute(String id)从开始到当前的间隔分钟数,取绝对值
long intervalMs(String id)从开始到当前的间隔时间(毫秒数)
String intervalPretty(String id)从开始到当前的间隔时间(毫秒数),返回XX天XX小时XX分XX秒XX毫秒
long intervalRestart(String id)重新计时并返回从开始到当前的持续时间秒,如果此分组下没有记录,则返回0
long intervalSecond(String id)从开始到当前的间隔秒数,取绝对值
long intervalWeek(String id)从开始到当前的间隔周数,取绝对值
long start(String id)开始计时并返回当前时间
@Test
public void groupTimeIntervalTest() {
    // 创建一个 timeinterval 对象
    TimeInterval timeInterval = new TimeInterval();
    timeInterval.start("1");
    ThreadUtil.safeSleep(11 * 1000);
    timeInterval.start("2");
    ThreadUtil.safeSleep(22 * 1000);
    System.out.println("Timer 1: " + timeInterval.intervalMs("1") + "ms");
    System.out.println("Timer 2: " + timeInterval.intervalMs("2") + "ms");
}

总结

  Hutool 不仅仅只有这一种工具类,还包含了其他许多工具类。在这里我作为一名Hutool的用户,我感谢Hutool的创作者和维护者们为我们带来如此强大便捷的工具库,希望Hutool功能越来越完善,为我们的开发工作带来更多的便利。同时也祝愿所有开发者没有BUG困扰,能够愉快地编写出高效、功能完善的程序。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独泪了无痕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值