共计 3377 个字符,预计需要花费 9 分钟才能阅读完成。
一、Hutool 是什么
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
简单来说,Hutool 提供大量的工具类,满足开发的基本需求。
二、我为什么推荐它?
写代码时,难免会有和同事类似的功能开发。如果自己比较晚做这个功能,少不了借鉴同事的代码。(当然,也就是 ctrl + c
+ ctrl + v
, 嘻嘻)
这时,发现同事大量使用了 hutool 工具类,简化了自己的代码的同时,又省去了重复造轮子。
比如一个获取当天零点的时间戳代码,我当时是网上一顿查,看着差不多的代码然乎 copy 下来,修修改改放在的 DateUtils 工具类。但是当我看见同时的代码只需要使用 DateUtil.beginOfDay(date) 就能得到当天的零点时间。当然,获取到的是日期类型,但是获取到日期了,获取时间戳还难吗?
当时真是觉得自己有够傻的,于是准备去了解学习下这个工具类,方便以后开发能及时想起来有这些个方法。毕竟,工欲善其事,必先利其器!
三、案例
1 Convert类
Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。Convert类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数defaultValue用于在转换失败时返回一个默认值。
转换为字符串
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);
转换为指定类型数组
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 a = "2017-05-06";
Date value = Convert.toDate(a);
转换为集合
Object[] a = {"a", "你", "好", "", 1};
List<?> list = Convert.convert(List.class, a);
//从4.1.11开始可以这么用
List<?> list = Convert.toList(a);
半角和全角转换
// 半角转全角
String a = "123456789";
//结果为:"123456789"
String sbc = Convert.toSBC(a);
// 全角转半角
String a = "123456789";
//结果为"123456789"
String dbc = Convert.toDBC(a);
Unicode和字符串转换
String a = "我是一个小小的可爱的字符串";
//结果为:"\\u6211\\u662f\\u4e00\\u4e2a\\u5c0f\\u5c0f\\u7684\\u53ef\\u7231\\u7684\\u5b57\\u7b26\\u4e32"
String unicode = Convert.strToUnicode(a);
//结果为:"我是一个小小的可爱的字符串"
String raw = Convert.unicodeToStr(unicode);
时间单位转换
Convert.convertTime方法主要用于转换时长单位,比如一个很大的毫秒,我想获得这个毫秒数对应多少分
long a = 4535345;
//结果为:75
long minutes = Convert.convertTime(a, TimeUnit.MILLISECONDS, TimeUnit.MINUTES);
2 DateUtil
字符串转日期
DateUtil.parse 方法会自动识别一些常用格式,包括 yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss......
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
使用自定义日期格式转化
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");
格式化日期为字符串
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
//结果 2017/03/01
String format = DateUtil.format(date, "yyyy/MM/dd");
//常用格式的格式化,结果:2017-03-01
String formatDate = DateUtil.formatDate(date);
//结果:2017-03-01 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);
//结果:00:00:00
String formatTime = DateUtil.formatTime(date);
获取Date对象的某个部分
Date date = DateUtil.date();
//获得年的部分
DateUtil.year(date);
//获得月份,从0开始计数
DateUtil.month(date);
//获得月份枚举
DateUtil.monthEnum(date);
开始和结束时间
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);
日期时间偏移
日期或时间的偏移指针对某个日期增加或减少分、小时、天等等,达到日期变更的目的。
String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);
//结果:2017-03-03 22:33:23
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
//常用偏移,结果:2017-03-04 22:33:23
DateTime newDate2 = DateUtil.offsetDay(date, 3);
//常用偏移,结果:2017-03-01 19:33:23
DateTime newDate3 = DateUtil.offsetHour(date, -3);
日期时间差
tring 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);
格式化时间差
//Level.MINUTE表示精确到分
String formatBetween = DateUtil.formatBetween(between, Level.MINUTE);
//输出:31天1小时
Console.log(formatBetween);
东西很多,官网在这:Hutool
提醒:本文发布于826天前,文中所关联的信息可能已发生改变,请知悉!