• DateUtil时间工具类的基本使用


    导入依赖

    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.7.21</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Date、long、Calendar类型之间相互转换

    //当前时间 结果:2022-06-30 20:16:42
    Date date = DateUtil.date();
    //当前时间 结果:2022-06-30 20:16:42
    Date date2 = DateUtil.date(Calendar.getInstance());
    //当前时间 结果:2022-06-30 20:16:42
    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

    字符串转日期

    DateUtil.parse 方法会自动识别一些常用格式,包括:

    • yyyy-MM-dd HH:mm:ss

    • yyyy/MM/dd HH:mm:ss

    • yyyy.MM.dd HH:mm:ss

    • yyyy年MM月dd日 HH时mm分ss秒

    • yyyy-MM-dd yyyy/MM/dd

    • yyyy.MM.dd HH:mm:ss

    • HH时mm分ss秒

    • yyyy-MM-dd HH:mm

    • yyyy-MM-dd HH:mm:ss.SSS

    • yyyyMMddHHmmss

    • yyyyMMddHHmmssSSS

    • yyyyMMdd

    • EEE, dd MMM yyyy HH:mm:ss z

    • EEE MMM dd HH:mm:ss zzz yyyy

    • yyyy-MM-dd’T’HH:mm:ss’Z’

    • yyyy-MM-dd’T’HH:mm:ss.SSS’Z’

    • yyyy-MM-dd’T’HH:mm:ssZ

    • yyyy-MM-dd’T’HH:mm:ss.SSSZ

    String dateStr = "2022-06-30";
    Date date = DateUtil.parse(dateStr);
    
    • 1
    • 2

    我们也可以使用自定义日期格式转化:

    String dateStr = "2022-06-30";
    Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");
    
    • 1
    • 2

    格式化日期输出

    String dateStr = "2022-06-30";
    Date date = DateUtil.parse(dateStr);
    
    //结果 2022/06/30
    String format = DateUtil.format(date, "yyyy/MM/dd");
    
    //常用格式的格式化,结果:2022-06-30
    String formatDate = DateUtil.formatDate(date);
    
    //结果:2022-06-30 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

    获取Date对象的某个部分

    Date date = DateUtil.date();
    //获得年的部分
    DateUtil.year(date);
    //获得月份,从0开始计数
    DateUtil.month(date);
    //获得月份枚举
    DateUtil.monthEnum(date);
    //.....
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    开始和结束时间

    有的时候我们需要获得每天的开始时间、结束时间,每月的开始和结束时间等等,DateUtil也提供了相关方法:

    String dateStr = "2022-06-30 22:33:23";
    Date date = DateUtil.parse(dateStr);
    
    //一天的开始,结果:2022-06-30 00:00:00
    Date beginOfDay = DateUtil.beginOfDay(date);
    
    //一天的结束,结果:2022-06-30 23:59:59
    Date endOfDay = DateUtil.endOfDay(date);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    日期时间偏移

    日期或时间的偏移指针对某个日期增加或减少分、小时、天等等,达到日期变更的目的。Hutool也针对其做了大量封装:

    String dateStr = "2022-06-30 22:33:23";
    Date date = DateUtil.parse(dateStr);
    
    //结果:2022-06-30 22:33:23
    Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
    
    //常用偏移,结果:2022-06-30 22:33:23
    DateTime newDate2 = DateUtil.offsetDay(date, 3);
    
    //常用偏移,结果:2022-06-30 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

    日期时间差

    有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool将此类方法封装为between方法:

    String dateStr1 = "2022-06-30 22:33:23";
    Date date1 = DateUtil.parse(dateStr1);
    
    String dateStr2 = "22022-06-30 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

    格式化时间差

    有时候我们希望看到易读的时间差,比如XX天XX小时XX分XX秒,此时使用DateUtil.formatBetween方法:

    //Level.MINUTE表示精确到分
    String formatBetween = DateUtil.formatBetween(between, Level.MINUTE);
    //输出:31天1小时
    Console.log(formatBetween);
    
    • 1
    • 2
    • 3
    • 4

    星座和属相

    // "摩羯座"
    String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);
    
    // "狗"
    String chineseZodiac = DateUtil.getChineseZodiac(1994);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其它

    //年龄
    DateUtil.ageOfNow("1990-01-30");
    
    //是否闰年
    DateUtil.isLeapYear(2017);
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    Java之基本数据类型(3)
    普通人想要通过互联网来赚钱,无非就是在这些平台上面来下功夫
    【大虾送书第九期】速学Linux:系统应用从入门到精通
    单链表(Single Link Table)——单文件实现
    算法小讲堂之B树和B+树(浅谈)|考研笔记
    Verilog描述语言程序基本结构
    系统开发系列 之java反射以及应用
    基于混沌搜索策略的鲸鱼优化算法-附代码
    excel中删除重复项
    java毕业设计创意产业园区管理mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/qq_43102730/article/details/125547473