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;@SpringBootTestpublic 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, %sn", 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