Hutool实现日期时间获取、转换、格式化

时间:2025-03-11 20:22:20

目录

获取当前时间

格式化日期输出

获取Date对象

开始和结束时间

日期时间偏移

日期时间差

获取当前日期时间

使用对象获取年月日

DateTime转字符串


      Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位。

        对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用,提供了众多便捷的方法对日期对象操作。

获取当前时间

/**
     * 获取当前时间
     */
    @Test
    public void DateUtil(){
      //当前时间
      Date date = ();
      (date);
      //当前时间
      Date date2 = (());
      (date2);
      //当前时间
      Date date3 = (());
      (date3);
      //当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
      String now = ();
      (now);
      //当前日期字符串,格式:yyyy-MM-dd
      String today= ();
      (today);
  }

格式化日期输出

/**
     * 格式化日期输出
     */
    @Test
    public void DateParse(){
        String dateStr = "2022-04-19";

        //2022-04-19 00:00:00
        Date date = (dateStr);
        (date);

        //2022/04/19
        String format = (date, "yyyy/MM/dd");
        (format);

        //2022-04-19
        String formatDate = (date);
        (formatDate);

        //2022-04-19 00:00:00
        String formatDateTime = (date);
        (formatDateTime);

        //00:00:00
        String formatTime = (date);
        (formatTime);
    }

获取Date对象

/**
     * 获取Date对象的某个部分
     */
    @Test
    public void DatePart(){
        Date date = ();
        ((date));
        //3 + 1
        ((date));
        //APRIL 4月
        ((date));
    }

开始和结束时间

/**
     * 开始和结束时间
     */
    @Test
    public void beginOfDay(){
        String dateStr = "2022-03-01 22:33:23";
        Date date = (dateStr);

        //一天的开始,结果:2022-03-01 00:00:00
        Date beginOfDay = (date);
        (beginOfDay);

        //一天的结束,结果:2022-03-01 23:59:59
        Date endOfDay = (date);
        (endOfDay);
    }

日期时间偏移

/**
     * 日期时间偏移
     * //昨天
     * ()
     * //明天
     * ()
     * //上周
     * ()
     * //下周
     * ()
     * //上个月
     * ()
     * //下个月
     * ()
     */
    @Test
    public void offset(){
        String dateStr = "2022-03-01 22:33:23";

        //2022-03-01 22:33:23
        Date date = (dateStr);
        (date);

        //2022-03-03 22:33:23
        Date newDate = (date, DateField.DAY_OF_MONTH, 2);
        (newDate);

        //2022-03-04 22:33:23
        DateTime newDate2 = (date, 3);
        (newDate2);

        //2022-03-01 19:33:23
        DateTime newDate3 = (date, -3);
        (newDate3);
    }

日期时间差

/**
     * 日期时间差
     * 有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool将此类方法封装为between方法
     */
    @Test
    public void between(){
        String dateStr1 = "2022-03-01 22:33:23";
        Date date1 = (dateStr1);

        String dateStr2 = "2022-04-01 23:33:23";
        Date date2 = (dateStr2);

        //相差一个月,31天
        long betweenDay = (date1, date2, );
        (betweenDay);
    }

获取当前日期时间

/**
     * 获取当前日期时间
     */
    @Test
    public void DateTime(){
        Date date = new Date();
        //new方式创建
        DateTime time = new DateTime(date);
        (time);
        //of方式创建
        DateTime now = ();
        DateTime dt = (date);
        (now);
        (dt);
    }

使用对象获取年月日

/**
     * 使用对象
     */
    @Test
    public void DateTimeObject(){
        DateTime dateTime = new DateTime("2022-04-18 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
        int year = ();
        (year);
        int month = ()+1;
        (month);
        int day = ();
        (day);
    }

DateTime转字符串

    @Test
    public void dateStr(){
        DateTime dateTime = new DateTime("2022-04-18 12:34:23", DatePattern.NORM_DATETIME_FORMAT);
        String dateStr = ();
        (dateStr);
    }