• HuTool工具类常用方法汇总



    文档地址
    引入需要依赖

    <dependency>
        <groupId>cn.hutoolgroupId>
        <artifactId>hutool-allartifactId>
        <version>5.8.9version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1、DateUtil: 日期时间工具类

    1.1、Date、long、calendar之间的相互转换
    // 当前时间
    Date date = DateUtil.date();
    // 当前时间
    Date date2 = DateUtil.date(Calendar.getInstance());
    // 当前时间
    Date date3 = DateUtil.date(System.currentTimeMillis());
    // 当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
    String now = DateUtil.now();
    // 当前日期字符串,格式:yyyy-MM-dd
    String today = DateUtil.today();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1.2、字符串转日期
    String dateStr = "2017-03-01";
    Date date = DateUtil.parse(dateStr);
    // 可以自定义日期格式转化
    Date date = DateUtil.parse(dateStr,"yyyy-MM-dd");
    
    • 1
    • 2
    • 3
    • 4
    1.3、格式化日期输出
    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1.4、获取Date对象的某个部分
    Date date = DateUtil.date();
    //获得年的部分
    DateUtil.year(date);
    //获得月份,从0开始计数
    DateUtil.month(date);
    //获得月份枚举
    DateUtil.monthEnum(date);
    //.....
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.5、开始时间和结束时间(可以按日、按周、按月)
    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.6、日期时间偏移
    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    针对当前时间、提供了简化的偏移方法(例如,昨天、上周、上个月):

    //昨天
    DateUtil.yesterday()
    //明天
    DateUtil.tomorrow()
    //上周
    DateUtil.lastWeek()
    //下周
    DateUtil.nextWeek()
    //上个月
    DateUtil.lastMonth()
    //下个月
    DateUtil.nextMonth()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1.7、日期时间差
    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.8、格式化时间差
    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天一小时
    System.out.println(DateUtil.formatBetween(date1,date2, BetweenFormatter.Level.MINUTE));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1.9、星座和属相
    // "摩羯座"
    String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);
    
    // "狗"
    String chineseZodiac = DateUtil.getChineseZodiac(1994);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2.0、其他
    //年龄
    DateUtil.ageOfNow("1990-01-30");
    
    //是否闰年
    DateUtil.isLeapYear(2017);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、Convert类型转换工具类

    Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换,用于简化类型转换。Convert类中大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型。同时支持第二个参数defaultValue用于在转换失败时返回一个默认值

    2.1、Java常见类型转换
    2.1.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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    2.1.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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    2.1.3、转换为日期对象
    String a = "2017-05-06";
    Date value = Convert.toDate(a);
    
    • 1
    • 2
    2.1.4、转换为集合
    Object[] a = {"a", "你", "好", "", 1};
    List<?> list = Convert.convert(List.class, a);
    //从4.1.11开始可以这么用
    List<?> list = Convert.toList(a);
    
    • 1
    • 2
    • 3
    • 4

    3、strUtil 工具类

    3.1、hasBlank、hasEmpty方法

    就是给定一些字符串,如果一旦有空的就返回true,常用于判断好多字段是否有空的(例如web表单数据)

    这两个方法的区别是hasEmpty只判断是否为null或者空字符串(“”),hasBlank则会把不可见字符也算做空,isEmptyisBlank同理。

    3.2、removePrefix、removeSuffix方法

    这两个是去掉字符串的前缀后缀的,例如去个文件名的扩展名。

    String fileName = StrUtil.removeSuffix("pretty_girl.jpg", ".jpg")  //fileName -> pretty_girl
    
    • 1

    还有忽略大小写的removePrefixIgnoreCaseremoveSuffixIgnoreCase都比较实用

    3.3、sub方法

    不得不提一下这个方法,有人说String有了subString你还写它干啥,我想说subString方法越界啥的都会报异常,你还得自己判断,难受死了,各种情况判断都加进来了,而且index的位置还支持负数哦,-1表示最后一个字符(这个思想来自于Python,如果学过Python的应该会很喜欢的),还有就是如果不小心把第一个位置和第二个位置搞反了,也会自动修正(例如想截取第4个和第2个字符之间的部分也是可以的哦~) 举个栗子

    String str = "abcdefgh";
    String strSub1 = StrUtil.sub(str, 2, 3); //strSub1 -> c
    String strSub2 = StrUtil.sub(str, 2, -3); //strSub2 -> cde
    String strSub3 = StrUtil.sub(str, 3, 2); //strSub2 -> c
    
    • 1
    • 2
    • 3
    • 4
    3.4、format方法
    String template = "{}爱{},就像老鼠爱大米";
    String str = StrUtil.format(template, "我", "你"); //str -> 我爱你,就像老鼠爱大米
    
    • 1
    • 2

    参数定义成了Object类型,如果传别的类型的也可以,会自动调用toString()方法的。

    4、NumberUtil:数字处理工具类

    可用于各种类型数字的加减乘除操作及类型判断

    double n1 = 1.234;
    double n2 = 1.234;
    double result;
    //对float、double、BigDecimal做加减乘除操作
    result = NumberUtil.add(n1, n2);
    result = NumberUtil.sub(n1, n2);
    result = NumberUtil.mul(n1, n2);
    result = NumberUtil.div(n1, n2);
    //保留两位小数
    BigDecimal roundNum = NumberUtil.round(n1, 2);
    String n3 = "1.234";
    //判断是否为数字、整数、浮点数
    NumberUtil.isNumber(n3);
    NumberUtil.isInteger(n3);
    NumberUtil.isDouble(n3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5、BeanUtil工具类

    什么是bean?

    把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。实际上JavaBean就是一个Java类,在这个Java类中就默认形成了一种规则——对属性进行设置和获得。而反之将说Java类就是一个JavaBean,这种说法是错误的,因为一个java类中不一定有对属性的设置和获得的方法(也就是不一定有set和get方法)。

    通常Java中对Bean的定义是包含setXXX和getXXX方法的对象,在Hutool中,采取一种简单的判定Bean的方法:是否存在只有一个参数的setXXX方法。

    Bean工具类主要是针对这些setXXX和getXXX方法进行操作,比如将Bean对象转为Map等等

    Person person = new Person();
    person.setAge(21);
    person.setName("战三");
    // bean转map
    Map<String, Object> map = BeanUtil.beanToMap(person);
    // map转bean
    Person person1 = BeanUtil.mapToBean(map, Person.class, false);
    // 属性拷贝
    Person person2 = BeanUtil.copyProperties(person1, Person.class);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6、CollUtil工具类

    集合操作工具类,定义了一些常用的集合操作

    //数组转换为列表
    String[] array = new String[]{"a", "b", "c", "d", "e"};
    List<String> list = CollUtil.newArrayList(array);
    //join:数组转字符串时添加连接符号
    String joinStr = CollUtil.join(list, ",");
    LOGGER.info("collUtil join:{}", joinStr);
    //将以连接符号分隔的字符串再转换为列表
    List<String> splitList = StrUtil.split(joinStr, ',');
    LOGGER.info("collUtil split:{}", splitList);
    //创建新的Map、Set、List
    HashMap<Object, Object> newMap = CollUtil.newHashMap();
    HashSet<Object> newHashSet = CollUtil.newHashSet();
    ArrayList<Object> newList = CollUtil.newArrayList();
    //判断列表是否为空
    CollUtil.isEmpty(list);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    学习总结:jQuery插件——Validation Plugin
    asp.net老年大学信息VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计
    嵌入式养成计划-47----QT--基于QT的OpenCV库实现人脸识别功能
    VSCode下载安装与使用教程
    定时脚本自动自动将文件push到git
    Web安全——穷举爆破下篇(仅供学习)
    数据集划分——train_test_split函数使用说明
    01-若依环境搭建
    求教Jquery的Ajax事件
    使用微PE工具箱制作winU盘启动盘~重装系统
  • 原文地址:https://blog.csdn.net/qijing19991210/article/details/127884732