Hutool Java工具类库-DateUtil(时间工具类)

时间:2025-04-25 07:02:02

 一、依赖:

<!--Hutool Java工具包-->
    <dependency>
       <groupId></groupId>
       <artifactId>hutool-all</artifactId>
       <version>5.4.5</version>
 </dependency>

二、常用方法

1.计算生日

方法 参数 返回值 作用
age(Date birthday, Date dateToCompare) birthday:生日
dateToCompare:需要对比的日期
int 
计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
ageOfNow(String birthDay) birthDay:生日,标准日期字符串 int 生日转为年龄,计算法定年龄
ageOfNow(Date birthDay) birthDay:生日 int 生日转为年龄,计算法定年龄

2.获取某时间的开始|结束日期

方法 参数 返回值 作用
beginOfDay(Date date) date:日期 DateTime 获取某天的开始时间
endOfDay(Date date) date:日期 DateTime 获取某天的结束时间
beginOfWeek(Date date) date:日期 DateTime 获取某周的开始时间,周一定为一周的开始时间
beginOfWeek(Date date, boolean isMondayAsFirstDay) date:日期
isMondayAsFirstDay:是否周一做为一周的第一天(false表示周日做为第一天)
DateTime 获取某周的开始时间
endOfWeek(Date date) date:日期 DateTime 获取某周的结束时间,周日定为一周的结束
endOfWeek(Date date, boolean isSundayAsLastDay) date:日期
isSundayAsLastDay:是否周日做为一周的最后一天(false表示周六做为最后一天)
DateTime 获取某周的结束时间
beginOfMonth(Date date) date:日期 DateTime 获取某月的开始时间
endOfMonth(Date date) date:日期 DateTime 获取某月的结束时间
beginOfQuarter(Date date) date:日期

DateTime

获取某季度的开始时间
endOfQuarter(Date date) date:日期

DateTime

获取某季度的结束时间
beginOfYear(Date date) date:日期

DateTime

获取某年的开始时间
endOfYear(Date date) date:日期

DateTime

获取某年的结束时间
beginOfSecond(Date date) date:日期

DateTime

获取秒级别的开始时间,即毫秒部分设置为0

示例:

/**
 * new Date() 时间为2024-03-01 19:45:51
 */

// 获取秒级别的开始时间,即毫秒部分设置为0
((new Date()));
-- 2024-03-01 19:45:51


-- 获取某周的开始时间
((new Date()));
-- 2024-02-26 00:00:00

3.计算两个时间之差

方法 参数 返回值 作用
between(Date beginDate, Date endDate, DateUnit unit) beginDate:起始日期
endDate:结束日期
unit:相差的单位:相差 天、小时 等
long 判断两个日期相差的时长,只保留绝对值
between(Date beginDate, Date endDate, DateUnit unit, boolean isAbs) beginDate:起始日期
endDate:结束日期
unit:相差的单位:相差 天、小时 等
isAbs:日期间隔是否只保留绝对值正数
long 判断两个日期相差的时长
betweenMs(Date beginDate, Date endDate) beginDate:起始日期
endDate:结束日期
long 判断两个日期相差的毫秒数
betweenDay(Date beginDate, Date endDate, boolean isReset) beginDate:起始日期
endDate:结束日期
isReset:是否重置时间为起始时间
long 判断两个日期相差的天数。有时候我们计算相差天数的时候需要忽略时分秒。
 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒
 如果isReset为 false相差天数为0。
 如果isReset为 true相差天数将被计算为1
betweenWeek(Date beginDate, Date endDate, boolean isReset) beginDate:开始时间
endDate:结束时间
isReset:是否重置时间为起始时间
long 计算指定时间区间内的周数

示例:

// 获取年份
int year = (new Date());

// 获取今天日期 yyyy-MM-dd格式
String today = ();

// 获取生肖
String chineseZodiac = (1990);

// 将毫秒转成方便阅读的时间,如3小时25分23秒232毫秒
String readableTime = (12323232);

// 转为农历日期
ChineseDate chineseDate = new ChineseDate(new Date());
// 农历年份,如2021
final int chineseYear = ();
// 农历月份,如腊月
final String chineseMonthName = ();
// 农历日期,如初三
final String chineseDay = ();

// 方便地将Date转换为LocalDateTime
final LocalDateTime localDateTime = (new Date());

// 获取一天开始时间
(localDateTime);
// 获取一天结束时间
(localDateTime);