专业的编程技术博客社区

网站首页 > 博客文章 正文

Hutool 工具类的简单使用入门(hutool doc)

baijin 2024-11-01 11:16:14 博客文章 7 ℃ 0 评论

Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。


一、Hutool 依赖包

在 Mavan 项目中引入 dependency 即可。通过 Hutool,可以减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。

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


Hutool 提供了对日期时间、随机数、图片、布隆过滤器、文件、流、加密解密、转码、正则、线程、XML、JSON等常用方法进行封装,组成各种Util工具类,同时提供以下组件:


可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。


二、日期 API

我们知道,Java 中关于日期的 API 使用一直很繁琐,从 Date 到 Calendar,对开发者都不是那么友好,还容易出 BUG,那么 Hutool 首先就对日期下手了,提供了针对 JDK 中 Date 和 Calendar 对象的封装。


比如要对当前的 Date 日期进行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 这种方式,但 SimpleDateFormat 这个类是线程不安全的,而 Hutool 提供了一个 FastDateFormat 类,提供线程安全的针对 Date 对象的格式化和日期字符串解析支持。此对象在实际使用中并不需要感知,相关操作已经封装在 DateUtil 和 DateTime 的相关方法中。


下面是一段日期API 的示例代码:

import cn.hutool.core.date.*;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;

@SpringBootTest
public class DateTest {
 @Test
 public void testDate() {
 // 获取当前日期
 Date date = DateUtil.date();
 System.out.println(date);

 // 格式化日期输出
 //结果 2022/xx/xx
 String format = DateUtil.format(date, "yyyy/MM/dd");

 //常用格式的格式化,结果:2022-xx-xx
 String formatDate = DateUtil.formatDate(date);

 //结果:2022-xx-xx 00:00:00
 String formatDateTime = DateUtil.formatDateTime(date);

 //结果:00:00:00
 String formatTime = DateUtil.formatTime(date);
 System.out.printf("%s, %s, %s, %s\n", format, formatDate, formatDateTime, formatTime);

 String dateStr1 = "2022-08-08 08:08:08";
 Date date1 = DateUtil.parse(dateStr1);
 String dateStr2 = "2023-01-01 00:00:00";
 Date date2 = DateUtil.parse(dateStr2);
 // 日期时间差
 long betweenDay = DateUtil.between(date1, date2, DateUnit.MS);
 // 格式化时间差,输出:2天1小时1分4秒
 String formatBetween = DateUtil.formatBetween(betweenDay, BetweenFormatter.Level.SECOND);
 System.out.println(formatBetween);

 //一天的开始,结果:2022-xx-01 00:00:00
 Date beginOfDay = DateUtil.beginOfDay(date);
 //一天的结束,结果:2022-xx-01 23:59:59
 Date endOfDay = DateUtil.endOfDay(date);
 System.out.printf("%s %s \n", beginOfDay, endOfDay);

 // 星座和属相
 // 射手座
 String zodiac = DateUtil.getZodiac(Month.JUNE.getValue(), 11);
 System.out.println(zodiac);
 // 蛇
 String chineseZodiac = DateUtil.getChineseZodiac(2003);
 System.out.println(chineseZodiac);

 DateTime dateTime = DateUtil.offsetDay(date1, 10);
 System.out.println(dateTime);
 }
}

输出结果:

2022-08-16 23:20:57

2022/08/16, 2022-08-16, 2022-08-16 23:20:57, 23:20:57

145天15小时51分52秒

2022-08-16 00:00:00 2022-08-16 23:59:59

双子座

2022-08-18 08:08:08

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表