考虑到 Java 本身对日期时间的支持有限,并且 Date 和 Calendar 对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。
对于 Date 对象,为了便捷,使用了一个 DateTime 类来代替之,继承自 Date 对象,主要的便利在于,覆盖了 toString() 方法,返回 yyyy-MM-dd HH:mm:ss 形式的字符串,方便在输出时的调用(例如日志记录等),提供了众多便捷的方法对日期对象操作。
1 格式化输出
String dateStr = "2021-04-21 01:02:03";
Date date = DateUtil.parse(dateStr);
//结果 2021/04/21
String format = DateUtil.format(date, "yyyy/MM/dd");
//常用格式的格式化,结果:2021-04-21
String formatDate = DateUtil.formatDate(date);
//结果:2021-04-01 01:02:03
String formatDateTime = DateUtil.formatDateTime(date);
//结果:01:02:03
String formatTime = DateUtil.formatTime(date);
2 字符串转日期
DateUtil.parse
方法会自动识别一些常用格式,包括:
(1)yyyy-MM-dd HH:mm:ss
(2)yyyy-MM-dd
(3)HH:mm:ss
(4)yyyy-MM-dd HH:mm
(5)yyyy-MM-dd HH:mm:ss.SSS
String dateStr = "2021-04-21";
Date date = DateUtil.parse(dateStr);
我们也可以使用自定义日期格式转化:
String dateStr = "2021-04-21";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");
3 日期时间差
有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool 将此类方法封装为 between 方法:
Date startDate=DateUtil.parse("2021-04-20 02:00:00");
Date endDate=DateUtil.parse("2021