开发中常用类以及方法合集

日期类

Calendar

   public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //获取当前年份
        System.out.println(calendar.get(Calendar.YEAR));
        //获取当年月份(注意要加1)
        System.out.println(calendar.get(Calendar.MONDAY+1));
        //获取周几(注意要减1)
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK) - 1);
        //获取今天几号
        System.out.println(calendar.get(Calendar.DATE));
        //0---上午   1---下午
        System.out.println(calendar.get(Calendar.AM_PM));
        //获取当前时间 Date -> String
        Date time = calendar.getTime();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(simpleDateFormat.format(time));

        //计算年份
        calendar = new GregorianCalendar();
        Calendar calendar2 = new GregorianCalendar();
        calendar2.set(Calendar.YEAR, 2000);
        //2023年在2000以后
        System.out.println(calendar.after(calendar2));
        //增加年分
        calendar2.add(Calendar.YEAR,25);
        System.out.println(calendar.before(calendar2));
    }
2023
33
3
16
0
2023-08-16 10:13:34
true
true

LocalDateTime

 public static void main(String[] args) {
        //获取当前时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        //创建对象
        LocalDateTime localDateTime = LocalDateTime.of(2023, 9, 17, 2, 2, 2);
        System.out.println(localDateTime);
        //加上60秒
        System.out.println(now.plusSeconds(60));
        //减去一年
        System.out.println(now.minusYears(2));
        //修改月份为12月
        System.out.println(now.withMonth(12));
        //判断时间再之前还是之后
        System.out.println(now.isAfter(localDateTime));
        System.out.println(now.isBefore(localDateTime));
    }
2023-08-17T14:14:44.747
2023-09-17T02:02:02
2023-08-17T14:15:44.747
2021-08-17T14:14:44.747
2023-12-17T14:14:44.747
false
true

Hutool

Hutool中 常用的工具类和方法_hutool常用方法_Maverick Programmer的博客-CSDN博客

DateUtil 日期时间工具类

Date、long、Calendar之间的相互转换

public static void main(String[] args) {
        //当前时间:date = 2019-09-17 16:59:23
        Date date = DateUtil.date();
        
        //当前时间:date2 = 2019-09-17 16:59:23
        Date date2 = DateUtil.date(Calendar.getInstance());
        
        //当前时间:date3 = 2019-09-17 16:59:23
        Date date3 = DateUtil.date(System.currentTimeMillis());
        
        //当前时间字符串:now = 2019-09-17 16:59:23
        String now = DateUtil.now();
        
        //当前日期字符串:today = 2019-09-17
        String today= DateUtil.today();
    }

字符串转日期 

/*DateUtil.parse方法会自动识别一些常用格式,包括:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS*/
//这四种情况均可以转换,并且输出结果均为: 2019-09-17 00:00:00
Date date1 = DateUtil.parse("2019-09-17");
Date date2 = DateUtil.parse("2019-09-17", "yyyy-MM-dd");
Date date3 = DateUtil.parse("2019/09/17", "yyyy/MM/dd");
Date date4 = DateUtil.parse("2019:09:17", "yyyy:MM:dd");

格式化日期输出 

Date date1 = DateUtil.parse("2019-09-17");

//结果: 2019/09/17
String format = DateUtil.format(date1, "yyyy/MM/dd");

//常用格式的格式化,结果:2017-03-01
String formatDate = DateUtil.formatDate(date1);

//结果:2019-09-17 00:00:00
String formatDateTime = DateUtil.formatDateTime(date1);

//结果:00:00:00
String formatTime = DateUtil.formatTime(date1);

获取Date对象的某个部分 

Date date = DateUtil.date();

//获得年的部分:year = 2019
int year = DateUtil.year(date);

//获得月份,从0开始计数:month = 8
int month = DateUtil.month(date);

//获得月份枚举 :monthEnum = SEPTEMBER
Month monthEnum = DateUtil.monthEnum(date);

开始和结束时间

String now = DateUtil.now();
Date date = DateUtil.parse(now);

//一天的开始,结果:2019-09-17 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束,结果:2019-09-17 23:59:59
Date endOfDay = DateUtil.endOfDay(date);

日期时间偏移

String now = DateUtil.now();
//date = 2019-09-17 17:35:35
Date date = DateUtil.parse(now);

//结果:newDate = 2019-09-19 17:35:35
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);

//常用偏移,结果:newDate2 = 2019-09-20 17:35:35
DateTime newDate2 = DateUtil.offsetDay(date, 3);

//常用偏移,结果:newDate3 = 2019-09-17 14:35:35
DateTime newDate3 = DateUtil.offsetHour(date, -3);

//针对当前时间,提供了简化的偏移方法(例如昨天、上周、上个月等):
//昨天
DateUtil.yesterday()
//明天
DateUtil.tomorrow()
//上周
DateUtil.lastWeek()
//下周
DateUtil.nextWeek()
//上个月
DateUtil.lastMonth()
//下个月
DateUtil.nextMonth()

日期时间差

Date date1 = DateUtil.parse("2019-09-20 17:35:35");
Date date2 = DateUtil.parse("2019-09-17 14:35:35");

//这里若date1和date2换位置,输出结果不变:betweenDay = 3
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);

 其他

//年龄:ageOfNow = 28
int ageOfNow = DateUtil.ageOfNow("1991-01-13");

//是否闰年:leapYear = false
boolean leapYear = DateUtil.isLeapYear(2019);
//当前是否是上午
boolean am = DateUtil.isAM(DateUtil.date());
//当前时间是否在指定时间之后
boolean after = DateUtil.date().isAfter(DateUtil.parse("2023-8-29"));

Convert 类型转换工具类

//转换为字符串
int a = 1;
String aStr = Convert.toStr(a);
//转换为指定类型数组
String[] b = {"1", "2", "3", "4"};
Integer[] bArr = Convert.toIntArray(b);
//转换为日期对象
String dateStr = "2017-05-06";
Date date = Convert.toDate(dateStr);
//转换为列表
String[] strArr = {"a", "b", "c", "d"};
List<String> strList = Convert.toList(String.class, strArr);

 StrUtil 类型转换工具类

        //判断是否为空字符串
        String str = "a.jpg";
        boolean empty = StrUtil.isEmpty(str);
        boolean blank = StrUtil.isBlank(str);
        //false
        System.out.println(empty);
        //true
        System.out.println(blank);

        //转换为StringBuilder
        StringBuilder builder = StrUtil.builder(str);
        builder.append("爱你");

        //字符串取反
        String reverse = StrUtil.reverse(str);
        System.out.println(reverse);

        //字符串分割
        List<String> split = StrUtil.split(str, "-");
        System.out.println(split);
        //取出索引位置
        int a = StrUtil.indexOf(str, Convert.toChar("是"));
        System.out.println(a);

        //移除前缀或者后缀
        String s = StrUtil.removeSuffix(str,".jpg");
        String s1 = StrUtil.removePrefix(str,"a");
        System.out.println(s1);

        //占位符
        String template = "这只是个占位符:{}";
        String str2 = StrUtil.format(template, "我是占位符");
        System.out.println(str2);

 NumberUtil 数字处理工具类

        double n1 = 1.236;
        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);
        System.out.println(result);
        //保留两位小数(四舍五入)
        BigDecimal roundNum = NumberUtil.round(n1, 2);
        System.out.println(roundNum);
        String n3 = "1.234";
        //判断是否为数字、整数、浮点数
        System.out.println(NumberUtil.isNumber(n3));
        System.out.println(NumberUtil.isInteger(n3));
        System.out.println(NumberUtil.isDouble(n3));

BeanUtil JavaBean的工具类

        Dog dogs = new Dog("小名", "女");
        Map<String, Object> map = BeanUtil.beanToMap(dogs);
        System.out.println(map);
        Dog dog = BeanUtil.mapToBean(map, Dog.class, false);
        System.out.println(dog);
        Dog copyDog = new Dog();
        BeanUtil.copyProperties(dogs, copyDog,"sex");
        System.out.println(copyDog.getName());
        System.out.println(copyDog.getSex());
        dogs.setName("小瓜");
        System.out.println(copyDog.getName());
        System.out.println(copyDog.getSex());

如果不为空则拷贝数据 

  //如果为空则不拷贝
        Dog dogs1 = new Dog("小名", null);
        Map<String, Object> map1 = BeanUtil.beanToMap(dogs1, MapUtil.newHashMap(), CopyOptions.create().setIgnoreNullValue(true));
        System.out.println(map1);

输出:{name=小名} 

CollUtil 集合操作的工具类

        //数组转换为列表
        String[] array = new String[]{"a", "b", "c", "d", "e"};
        List<String> list = CollUtil.newArrayList(array);
        //join:数组转字符串时添加连接符号
        String joinStr = CollUtil.join(list, ",");
        System.out.println(joinStr);
        //将以连接符号分隔的字符串再转换为列表
        List<String> splitList = StrUtil.split(joinStr, ',');
        System.out.println(splitList);
        //创建新的Map、Set、List
        HashSet<Object> newHashSet = CollUtil.newHashSet();
        ArrayList<Object> newList = CollUtil.newArrayList();
        //判断列表是否为空 list!=null && list.size()!=0
        System.out.println(CollUtil.isEmpty(newList));
        List<String> list1 = null;
        System.out.println(CollUtil.isEmpty(list1));

MapUtil Map操作工具类

       //将多个键值对加入到Map中
        Map<Object, Object> map = MapUtil.of(new String[][]{
                {"key1", "value1"},
                {"key2", "value2"},
                {"key3", "value3"}
        });
        //判断Map是否为空
        System.out.println(MapUtil.isEmpty(map));

ArrayUtil 数组工具

        //判断空 和 非空
        int[] a = {};
        int[] b = null;
        System.out.println(ArrayUtil.isEmpty(a));
        System.out.println(ArrayUtil.isEmpty(b));


        //新建泛型数组
        String[] newArray = ArrayUtil.newArray(String.class, 3);

        //泛型数组调用原生克隆
        Integer[] b1 = {1,2,3};
        Integer[] cloneB = ArrayUtil.clone(b1);
        System.out.println(Arrays.toString(cloneB));

ObjectUtil 对象工具

ObjectUtil .isEmpty()

ObjectUtil .isnull()

hutool包里的ObjectUtil.isNull和ObjectUtil.isEmpty的区别_HCAN学Java的博客-CSDN博客

IdUtil 唯一ID工具

// UUID
//生成的UUID是带-的字符串,类似于:a5c8a5e8-df2b-4706-bea4-08d0939410e3
String uuid = IdUtil.randomUUID();

RandomUtil 随机工具

        //例如我们想产生一个[10, 100)的随机数
        int c = RandomUtil.randomInt(10, 100);
        //随机获得列表中的一定量的不重复元素,返回Set
        Set<Integer> set = RandomUtil.randomEleSet(CollUtil.newArrayList(1, 1, 3, 4, 5, 6), 2);
        System.out.println(set);
        //获得一个随机的字符串(只包含数字和字符)
        System.out.println(RandomUtil.randomString(2));
        //RandomUtil.randomNumbers 获得一个只包含数字的字符串

身份证工具-IdcardUtil

  String ID_18 = "321083197812162119";

        //是否有效
        boolean valid = IdcardUtil.isValidCard(ID_18);
        System.out.println(valid);


        DateTime date = DateUtil.parse("2017-04-10");

        int age = IdcardUtil.getAgeByIdCard(ID_18, date);
        System.out.println(age);


        String birth = IdcardUtil.getBirthByIdCard(ID_18);
        System.out.println(birth);


        String province = IdcardUtil.getProvinceByIdCard(ID_18);
        System.out.println(province);

DesensitizedUtil脱敏

         // 5***************1X
        System.out.println(DesensitizedUtil.idCardNum("51343620000320711X", 1, 3));
        //180****1999
        System.out.println(DesensitizedUtil.mobilePhone("18049531999"));

        //比如密码,只保留了位数信息,**********
        System.out.println(DesensitizedUtil.password("1234567890"));

Dict

dict继承了HashMap类,key是string类型,value是Object类型

public static void main(String[] args) {
        Dict set = Dict.create()
                .set("name", "lyt")
                .set("age", 23);
        System.out.println(set);
    }

文件操作工具FileUtil

7hutool实战:FileUtil 文件工具类(100多个文件常用操作方法)_hutool fileutil-CSDN博客

二维码生成工具 QrCodeUtil

File file = FileUtil.file("C:\\Users\\lyt\\Desktop\\备份\\my.png");
QrCodeUtil.generate("hahaha", 100, 100, file);

Stream流

使用Lamda表达式出现空指针异常解决方案

 

Stream 流对象的创建与各方法-CSDN博客

开发总结实用Tips

List添加元素时指定索引

 public static void main(String[] args) {
        ArrayList<String> list = CollUtil.newArrayList();
        List<String> list1 = Arrays.asList("i1", "i2");
        list.add("p1");
        list.add("p2");
        list.add("p3");
        list.add(0, "d1");
        list.addAll(1, list1);
        for (String s : list) {
            System.out.println(s);
        }
    }

运行结果:

d1
i1
i2
p1
p2
p3 

BigDecimal

注意:使用BigDecimal创建double数据类型时使用String类型传值(当double必须用作BigDecimal的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用Double.toString(double)方法,然后使用BigDecimal(String)构造方法,将double转换为String。要获取该结果,请使用static valueOf(double)方法。)

 处理小数

setScale()
setScale(1) 表示保留一位小数,默认用四舍五入方式

setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3

setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4

setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入(5则向上入),2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入(5则向下舍),2.35变成2.3
例子
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("2.255");
        BigDecimal divide = bigDecimal.divide(BigDecimal.valueOf(1), 2, BigDecimal.ROUND_HALF_UP);
        System.out.println(divide);
    }

 比较大小

if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

spilt()方法,分割空格或者/的数据

tciket.getName().split(" |/");


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值