• 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
  • 相关阅读:
    【LIUNX】修改hostname方法
    Could not find artifact com.github.jgraph:jgraphx:pom:v3.9.3 in aliyunmaven
    openssl开发详解
    [C#] 允许当前应用程序通过防火墙
    卷积神经网络(CNN)
    linux vim编辑器
    python concurrent.futures 模块启动并行任务
    Python常用IDE选择与安装
    spring bean管理2
    【面经】携程数据仓库面经
  • 原文地址:https://blog.csdn.net/qq_43102730/article/details/125547473