1.1 开源项目简介

Hultool 是Java领域一个非常强大好用的开源工具库集。

下面是官网介绍:

  • Hutool是一个功能丰富且易用的Java工具库,通过诸多实用工具类的使用,旨在帮助开发者快速、便捷地完成各类开发任务。
  • 这些封装的工具涵盖了字符串、数字、集合、编码、日期、文件、IO、加密、数据库JDBC、JSON、HTTP客户端等一系列操作,
  • 可以满足各种不同的开发需求。

1.2 功能说明

Hultool 是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

  • hutool-aop JDK动态代理封装,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤 hutool-cache 简单缓存实现
  • hutool-core 核心,包括Bean操作、日期、各种Util等
  • hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
  • hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装
  • hutool-db JDBC封装后的数据操作,基于ActiveRecord思想 hutool-dfa 基于DFA模型的多关键字查找
  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
  • hutool-http 基于HttpUrlConnection的Http客户端封装 hutool-log 自动识别日志实现的日志门面
  • hutool-script 脚本执行封装,例如Javascript
  • hutool-setting 功能更强大的Setting配置文件和Properties封装
  • hutool-system 系统参数调用封装(JVM信息等) hutool-json JSON实现
  • hutool-captcha 图片验证码实现 hutool-poi 针对POI中Excel和Word的封装
  • hutool-socket 基于Java的NIO和AIO的Socket封装
  • hutool-jwt JSON Web Token
    (JWT)封装实现 可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。

1.4 如何使用 Hultool?

1.4.1 Maven 项目

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

1.4.2 Gradle 项目

implementation 'cn.hutool:hutool-all:5.8.19'

1.3 使用说明

Hultool 文档资源很全,具体用法可参考如下资料:

Hutool的源码分为两个分支,功能如下:

分支作用
v5-master主分支,release版本使用的分支,与中央库提交的jar一致,不接收任何pr或修改
v5-master开发分支,默认为下个版本的SNAPSHOT版本,接受修改或pr

1.4 强大功能展示

1.4.1 想将一个字符串转成Date类型?

DateUtil.parse方法会自动识别一些常用格式,包括:

  • 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 = "2017-03-01";
Date date = DateUtil.parse(dateStr);

用法示例二

String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

1.4.2 判断两个日期之间相隔多少天?

String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);

String dateStr2 = "2017-04-01 23:33:23";
Date date2 = DateUtil.parse(dateStr2);

//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);

注意:经过测试,参数date1和date2 传入的先后顺序无关

1.4.3 传入年月日时分秒,返回精确到毫秒的起止时间

代码示例

        ElkLogQueryParam elkLogQueryParam=new ElkLogQueryParam();
        elkLogQueryParam.setStartTimeStr("2023-05-29 16:14:11");
        elkLogQueryParam.setEndTimeStr("2023-05-31 16:14:11");
        Date startDate= ElkDateUtils.convertStartDateTimeDetail(elkLogQueryParam.getStartTimeStr());
        Date endDate= ElkDateUtils.convertEndDateTimeDetail(elkLogQueryParam.getEndTimeStr());
        String formatStartDate=DateUtil.format(startDate,"yyyy-MM-dd HH:mm:ss.SSS");
        String formatEndDate=DateUtil.format(endDate,"yyyy-MM-dd HH:mm:ss.SSS");
        System.out.println(formatStartDate);
        System.out.println(formatEndDate);

输出结果:

2023-05-29 16:14:11.000
2023-05-31 16:14:11.999

功能二次封装增强

    public static Date convertStartDateTimeDetail(String startTimeStr){
        return DateUtil.parse(startTimeStr+".000", "yyyy-MM-dd HH:mm:ss.SSS");
    }
    public static Date convertEndDateTimeDetail(String endTimeStr){
        return DateUtil.parse(endTimeStr+".999", "yyyy-MM-dd HH:mm:ss.SSS");
    }

1.4.4 最常用-年月日时分秒字符串转日期类型

String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);

1.4.5 最常用-年月日时分秒日期类型转字符串

Date date = new Date();
String dateStr = DateUtil.formatDateTime(date);
// 输出字符串 2023-09-01 10:42:00

1.4.6 获取某个日期的开始时间和结束时间

有的时候我们需要获得每天的开始时间、结束时间,每月的开始和结束时间等等,DateUtil也提供了相关方法:

String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);

//一天的开始,结果:2017-03-01 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束,结果:2017-03-01 23:59:59
Date endOfDay = DateUtil.endOfDay(date);
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐