Hutool工具包-常用开发工具类(让代码更简洁)
目录
- 一、简介
- 二、常见类型转换
- 三、时间日期
-
- 1、当前时间
- 2、字符串转Date
- 3、Date转字符串
- 4、获取Date对象的某个部分
- 5、开始和结束时间
- 6、日期时间偏移
- 7、日期时间对象-DateTime
-
- 7.1、创建对象
- 7.2、DateTime转字符串
- 四、工具类
-
- 1、字符串工具-StrUtil
-
- 1.1、移除字符串的前缀后缀
- 1.2、字符串填充
- 1.3、切分字符串为集合
- 2、数字工具-NumberUtil
-
- 2.1、加减乘除
- 2.2、随机数
- 3、数组工具-ArrayUtil
-
- 3.1、指定元素所在位置
- 3.2、转换指定分隔符为字符串
- 3.3、最大值和最小值
- 五、Hutool参考文档
一、简介
- Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率
- Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间
- 一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
- 可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version>
</dependency>
二、常见类型转换
1、转换为字符串
int a = 1;
//aStr为"1"
String aStr = Convert.toStr(a);long[] b = {1,2,3,4,5};
//bStr为:"[1, 2, 3, 4, 5]"
String bStr = Convert.toStr(b);
2、转换为指定类型数组
String[] b = { "1", "2", "3", "4" };
//结果为Integer数组
Integer[] intArray = Convert.toIntArray(b);long[] c = {1,2,3,4,5};
//结果为Integer数组
Integer[] intArray2 = Convert.toIntArray(c);String[] d = { "1", "2", "3", "4" };
//结果为BigDecimal数组
//Number是BigDecimal的父类
Number[] numbers = Convert.toNumberArray(d);
3、转换为日期对象
String a = "2017-05-06";
// 转换为Date
Date date = Convert.toDate(a);
// 转换为LocalDateTime
LocalDateTime localDateTime = Convert.toLocalDateTime(a);
4、转换为集合
String[] strArray = {"a", "b", "c"};
List<String> list = Convert.toList(String.class, strArray);
5、指定泛型
Object[] a = { "a", "你", "好", "", 1 };
List<String> list = Convert.convert(new TypeReference<List<String>>() {}, a);
6、转换为指定类型
User u = new User("1002","tom",18);
Person p = Convert.convert(Person.class, u);
三、时间日期
1、当前时间
//当前时间 yyyy-MM-dd HH:mm:ss
Date date = DateUtil.date();//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();
2、字符串转Date
- DateUtil.parse方法会
自动识别
一些常用格式,包括:- yyyy-MM-dd HH:mm:ss
- yyyy/MM/dd HH:mm:ss
- yyyy年MM月dd日 HH时mm分ss秒
- yyyyMMdd
- yyyy-MM-dd
- yyyy.MM.dd
- HH:mm:ss
- yyyy-MM-dd HH:mm:ss.SSS
- yyyyMMddHHmmss
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
也可以使用自定义日期格式转化:
String dateStr = "2017-03-01 10:10:20";
Date date = DateUtil.parse(dateStr, "yyyyMMdd");
3、Date转字符串
// 当前时间
Date date = DateUtil.date();//结果 2023/03/27
String format = DateUtil.format(date, "yyyy/MM/dd");//常用格式的格式化,结果:2023-03-27
String formatDate = DateUtil.formatDate(date);//结果:2023-03-27 13:59:53
String formatDateTime = DateUtil.formatDateTime(date);//结果:13:59:53
String formatTime = DateUtil.formatTime(date);
4、获取Date对象的某个部分
Date date = DateUtil.date();
//获得年的部分 int类型
DateUtil.year(date);
//获得月份,从0开始计数,int类型
DateUtil.month(date);
//获得月份枚举
DateUtil.monthEnum(date);
//获取日期是星期几,1表示周日,2表示周一,int类型
DateUtil.dayOfWeek(date);
//获取日期是所在年的第几天
DateUtil.dayOfYear(date);
5、开始和结束时间
//当前时间
Date date = DateUtil.date();//一天的开始,结果:2023-03-27 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);//一天的结束,结果:2023-03-27 23:59:59
Date endOfDay = DateUtil.endOfDay(date);
6、日期时间偏移
String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);//加2天 结果:2017-03-03 22:33:23
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);//加3天 常用偏移,结果:2017-03-04 22:33:23
DateTime newDate2 = DateUtil.offsetDay(date, 3);//减3个小时 常用偏移,结果:2017-03-01 19:33:23
DateTime newDate3 = DateUtil.offsetHour(date, -3);
7、日期时间对象-DateTime
- DateTime类
继承
于java.util.Date类,为Date类扩展了众多简便方法 - 这些方法多是DateUtil静态方法的对象表现形式,使用DateTime对象可以完全替代开发中Date对象的使用
7.1、创建对象
Date date = new Date();//方式一
DateTime time = new DateTime(date);
//方式二
DateTime dt = DateTime.of(date);
//方式三
DateTime dateTime = new DateTime();
//方式四
DateTime now = DateTime.now();
7.2、DateTime转字符串
DateTime dateTime = new DateTime("2017-01-05 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
//结果:2017-01-05 12:34:23
String dateStr = dateTime.toString();
//结果:20170105
String dateString = dateTime.toString("yyyyMMdd");
四、工具类
1、字符串工具-StrUtil
1.1、移除字符串的前缀后缀
// 去掉指定后缀 fileName -> girl
String fileName = StrUtil.removeSuffix("girl.jpg", ".jpg");// 去掉指定前缀 suffix -> jpg
String suffix = StrUtil.removePrefix("girl.jpg", "girl.");
1.2、字符串填充
// 字符串前填充 结果:"00abc"
StrUtil.fillBefore("abc", '0', 5);// 字符串前填充 结果:"abc111"
StrUtil.fillAfter("abc", '1', 6);
1.3、切分字符串为集合
String str = "a,b,c";
// 结果:[a, b, c]
List<String> list = StrUtil.split(str, ',');
2、数字工具-NumberUtil
2.1、加减乘除
NumberUtil.add
针对数字类型做加法NumberUtil.sub
针对数字类型做减法NumberUtil.mul
针对数字类型做乘法NumberUtil.div
针对数字类型做除法,并提供重载方法用于规定除不尽的情况下保留小数位数和舍弃方式
// 结果:5.062BigDecimal bigDecimal = new BigDecimal("10.1234");BigDecimal decimal = NumberUtil.div(bigDecimal, 2,3);
2.2、随机数
//返回1~10000的两个随机数
int[] ints = NumberUtil.generateRandomNumber(1, 10000, 2);
3、数组工具-ArrayUtil
3.1、指定元素所在位置
String [] array = {"a","b","c"};
// 结果:1
int index = ArrayUtil.indexOf(array, "b");
3.2、转换指定分隔符为字符串
String [] array = {"a","b","c"};
// 结果:"a-b-c"
String join = ArrayUtil.join(array,"-");
3.3、最大值和最小值
String [] array = {"a","b","c"};
// 结果:"a"
String min = ArrayUtil.min(array);
// 结果:"c"
String max = ArrayUtil.max(array);
五、Hutool参考文档
https://hutool.cn/docs/#/core/工具类/概述