1、引用Maven依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
2、Date、long、Calendar之间的相互转换
//当前时间
Date date = DateUtil.date();
//当前时间
Date date2 = DateUtil.date(Calendar.getInstance());
//当前时间
Date date3 = DateUtil.date(System.currentTimeMillis());
//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();
3、字符串转日期
DateUtil.parse
方法会自动识别一些常用格式,包括:
yyyy-MM-dd HH:mm:ss
- yyyy/MM/dd HH:mm:ss
- yyyy.MM.dd HH:mm:ss
- yyyy年MM月dd日 HH时mm分ss秒
- yyyy-MM-dd
- yyyy/MM/dd
- yyyy.MM.dd
- HH:mm:ss
- HH时mm分ss秒
- yyyy-MM-dd HH:mm
- yyyy-MM-dd HH:mm:ss.SSS
- yyyyMMddHHmmss
- yyyyMMddHHmmssSSS
- yyyyMMdd
- EEE, dd MMM yyyy HH:mm:ss z
- EEE MMM dd HH:mm:ss zzz yyyy
- yyyy-MM-dd'T'HH:mm:ss'Z'
- yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- yyyy-MM-dd'T'HH:mm:ssZ
- yyyy-MM-dd'T'HH:mm:ss.SSSZ
String dateStr = "2023-10-17";
Date date = DateUtil.parse(dateStr);
我们也可以使用自定义日期格式转化:
String dateStr = "2023-10-17";
Date date = DateUtil.parse(dateStr, DatePattern.NORM_DATE_PATTERN);
4、格式化日期输出
String dateStr = "2023-10-17";
Date date = DateUtil.parse(dateStr);
//结果 2023年10月17日
String format = DateUtil.format(date, DatePattern.CHINESE_DATE_PATTERN);
//常用格式的格式化,结果:2023-10-17
String formatDate = DateUtil.formatDate(date);
//结果:2023-10-17 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);
//结果:00:00:00
String formatTime = DateUtil.formatTime(date);
5、日期时间差
String dateStr1 = "2023-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2023-04-01 23:33:23";
Date date2 = DateUtil.parse(dateStr2);
//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
6、常用日期方法
String dateStr = "2023-10-17 22:33:23";
Date date = DateUtil.parse(dateStr);
//一天的开始,结果:2023-10-17 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);
//一天的结束,结果:2023-10-17 23:59:59
Date endOfDay = DateUtil.endOfDay(date);
// 加1天
Date tomorrow = DateUtil.offsetDay(date, 1);
// 加上1个小时
Date nextHour = DateUtil.offsetHour(date, 1);
// 加上30分钟
Date next30Minutes = DateUtil.offsetMinute(date, 30);
// 加上10秒
Date next10Seconds = DateUtil.offsetSecond(date, 10);
// 减去1天
Date yesterday = DateUtil.offsetDay(date, -1);
// 减去1个小时
Date prevHour = DateUtil.offsetHour(date, -1);
// 减去30分钟
Date prev30Minutes = DateUtil.offsetMinute(date, -30);
// 减去10秒
Date prev10Seconds = DateUtil.offsetSecond(date, -10);
//年龄
DateUtil.ageOfNow("1990-01-30");
7、Spring Boot日期格式化配置
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8