Java工具类库
链接地址:https://www.hutool.cn/docs/#/
1 接入准备
1.1 依赖注入
<!-- hutool SecureUtil.md5() --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency>
2 常用工具
2.1 Convert 类型转换
- toStr
- toIntArray
- toDate
- toList
- toSBC:半角转全角
- toDBC:全角转半角
- toHex:转换成16进制(hex)
- hexToStr
- digitToChinese:金额大小写转换
2.1.1 digitToChinese 金额大小写转换
/*** 金额大小写转换*/@Testpublic void digitToChinese() {double dig = 67556.32;String digR = Convert.digitToChinese(dig);System.out.println(digR);}
2.2 DateUtil 日期时间工具类
2.2.1 Date long Calendar相互转换
/*** Date、long、Calendar之间的相互转换*/@Testpublic void DLC() {//当前时间Date date = DateUtil.date();System.out.println(date);//当前Date date2 = DateUtil.date(Calendar.getInstance());System.out.println(date2);//当前Date date3 = DateUtil.date(System.currentTimeMillis());System.out.println(date3);//当前时间字符串 格式:yyyy-MM-dd HH:mm:ssString now = DateUtil.now();System.out.println(now);//格式:yyyy-MM-ddString today = DateUtil.today();System.out.println(today);}
result
2022-04-25 15:11:102022-04-25 15:11:102022-04-25 15:11:102022-04-25 15:11:102022-04-25
2.2.2 parse 字符串转日期
/*** 字符串转日期* DateUtil.parse*/@Testpublic void parse() {String dateStr = "2017-03-01";Date date = DateUtil.parse(dateStr);System.out.println(date);Date date1 = DateUtil.parse(dateStr,"yyyy-MM-dd");System.out.println(date1);}
result
2017-03-01 00:00:002017-03-01 00:00:00
2.2.3 format 格式化日期输出
/*** 格式化日期输出*/@Testpublic void format() {String dateStr = "2017-03-01";Date date = DateUtil.parse(dateStr);System.out.println(date);//结果 2017/03/01String format = DateUtil.format(date, "yyyy/MM/dd");System.out.println(format);//常用格式的格式化,结果:2017-03-01String formatDate = DateUtil.formatDate(date);System.out.println(formatDate);//结果:2017-03-01 00:00:00String formatDateTime = DateUtil.formatDateTime(date);System.out.println(formatDateTime);//结果:00:00:00String formatTime = DateUtil.formatTime(date);System.out.println(formatTime);}
result
2017-03-01 00:00:002017/03/012017-03-012017-03-01 00:00:0000:00:00
2.2.4 获取date的某个部分
/*** 获取Date对象的某个部分* 2022/4/25*/@Testpublic void datePart() {Date date = DateUtil.date();//获得年的部分System.out.println(DateUtil.year(date));//获得月份,从0开始计数System.out.println(DateUtil.month(date));//获得月份枚举System.out.println(DateUtil.monthEnum(date));//获取日期System.out.println(DateUtil.dayOfMonth(date));}
result
2022
3
APRIL
25
2.2.5 获取一天的开始和结束时间
/**
* 获取一天的开始和结束时间
*/
@Test
public void startAndEnd() {
String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);
System.out.println(date);
//一天的开始,结果:2017-03-01 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);
System.out.println(beginOfDay);
//一天的结束,结果:2017-03-01 23:59:59
Date endOfDay = DateUtil.endOfDay(date);
System.out.println(endOfDay);
}
result
2017-03-01 22:33:23
2017-03-01 00:00:00
2017-03-01 23:59:59
2.2.6 offSet 日期时间偏移
/**
* 日期时间偏移
*/
@Test
public void off() {
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);
//分钟偏移
System.out.println(DateUtil.offsetMinute(date,2));
}
result
2017-03-01 22:35:23
2.2.7 简化时间偏差
/**
* 简化时间偏移
*/
@Test
public void SimpleOff() {
//昨天
System.out.println(DateUtil.yesterday());
//明天
System.out.println(DateUtil.tomorrow());
//上周
System.out.println(DateUtil.lastWeek());
//下周
System.out.println(DateUtil.nextWeek());
//上个月
System.out.println(DateUtil.lastMonth());
//下个月
System.out.println(DateUtil.nextMonth());
}
result
2022-04-24 15:23:10
2022-04-26 15:23:10
2022-04-18 15:23:10
2022-05-02 15:23:10
2022-03-25 15:23:10
2022-05-25 15:23:10
2.2.8 between 日期时间差
/**
* 日期时间差
* between
*/
@Test
public void between() {
String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);
String dateStr2 = "2017-04-05 23:33:23";
Date date2 = DateUtil.parse(dateStr2);
//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
System.out.println(betweenDay);
//格式化时间差
String formatBet = DateUtil.formatBetween(betweenDay, BetweenFormatter.Level.MINUTE);
System.out.println(formatBet);
System.out.println(DateUtil.between(new Date(),new Date(),DateUnit.SECOND));
}
result
35
0分
0
2.2.9 ageOfNow
获取年龄
2.2.10 isLeapYear
是否是闰年
/**
* 年龄:ageOfNow
* 闰年:isLeapYear
*/
@Test
public void age() {
System.out.println(DateUtil.ageOfNow("1998-01-17"));
System.out.println(DateUtil.isLeapYear(2022));
}
24
false
2.3 StrUtil 字符串工具
- isBlank
- isNotBlank
- isEmpty
- isNotEmpty
- hasBlank
- hasEmpty
- removeProfix,removeSuffix
2.4 NumberUtil 数字工具
NumberUtil.add针对数字类型做加法NumberUtil.sub针对数字类型做减法NumberUtil.mul针对数字类型做乘法NumberUtil.div针对数字类型做除法,并提供重载方法用于规定除不尽的情况下保留小数位数和舍弃方式。NumberUtil.round方法主要封装BigDecimal中的方法来保留小数,返回BigDecimal,这个方法更加灵活,可以选择四舍五入或者全部舍弃等模式NumberUtil.roundStr方法主要封装String.format方法,舍弃方式采用四舍五入。NumberUtil.isNumber是否为数字NumberUtil.isInteger是否为整数NumberUtil.isDouble是否为浮点数NumberUtil.isPrimes是否为质数NumberUtil.generateRandomNumber。NumberUtil.generateBySetNumberUtil.factorial阶乘NumberUtil.sqrt平方根NumberUtil.divisor最大公约数NumberUtil.multiple最小公倍数NumberUtil.getBinaryStr获得数字对应的二进制字符串NumberUtil.binaryToInt二进制转intNumberUtil.binaryToLong二进制转longNumberUtil.compare比较两个值的大小NumberUtil.toStr数字转字符串,自动并去除尾小数点儿后多余的0
2.5 RandomUtil 随机工具
/**
* 产生随机数
*/
@Test
public void randomX() {
int c = RandomUtil.randomInt(100000, 1000000);
System.out.println(c);
System.out.println(RandomUtils.nextInt());
byte[] c1 = RandomUtil.randomBytes(10);
System.out.println(c1);
}
2.6 SecureUtil 加密解密工具
@Test
public void secure() {
System.out.println(SecureUtil.md5("123456"));
}
2.7 Validator 字段验证器
/**
* 验证
*/
@Test
public void val() {
//生日
String bir = "1998-01-17";
System.out.println("bir:" + Validator.isBirthday(bir));
//生日,分年月日
System.out.println("bir1:" + Validator.isBirthday(1998,1,17));
//检查数字是否在指定范围内
System.out.println("between:" + Validator.isBetween(99,0,200));
//是否为驾驶证
System.out.println("carDriving:" + Validator.isCarDrivingLicence("00001"));
//是否全为汉字
System.out.println("chinese:" + Validator.isChinese("查锦涛"));
//身份证
System.out.println("id:" + Validator.isCitizenId("4127241998"));
//邮箱
System.out.println("email:" + Validator.isEmail("2207808803@qq.com"));
//验证是否为英文字母 、数字和下划线
System.out.println("general:" + Validator.isGeneral("cjt_220780"));
//验证是否为给定长度范围的英文字母 、数字和下划线
System.out.println("general2:" + Validator.isGeneral("cjt_220780",6,9));
//ipv4 isIpv4
//ipv6 isIpv6
//全部小写 isLowerCase
//手机号码
System.out.println("mobile:" + Validator.isMobile("19103831847"));
//货币
System.out.println("money:" + Validator.isMoney("100"));
//isUUID
System.out.println("uuid:" + Validator.isUUID(UUID.randomUUID().toString()));
//是否是字母,(包括大写和小写)
System.out.println("word:" + Validator.isWord("dhwie"));
//邮编
System.out.println("zipCode:" + Validator.isZipCode("888888"));
}
2.7.1 isBirthday
生日
2.7.2 isBetween
检查数字是否在指定范围内
2.7.3 isCarDrivingLicence
是否为驾驶证
2.7.4 isChinese
是否全为汉字
2.7.5 isCitizenId
身份证
2.7.6 isEmail
邮箱
2.7.7 isGeneral
验证是否为英文字母 、数字和下划线
2.7.8 isLowerCase
全部小写
2.7.9 isMobile
手机号
2.7.10 isMoney
货币
2.7.11 isUUID
uuid
2.7.12 isWord
是否是字母,(包括大写和小写)
2.7.13 isZipCode
邮政编码
