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

文章介绍了Java中一个用于日期时间操作的工具类,包括获取当前时间、格式化日期输出、获取Date对象、处理开始和结束时间、日期时间偏移、计算日期时间差等功能,旨在简化和统一日期处理的API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

获取当前时间

格式化日期输出

获取Date对象

开始和结束时间

日期时间偏移

日期时间差

获取当前日期时间

使用对象获取年月日

DateTime转字符串


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

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

获取当前时间

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

格式化日期输出

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

        //2022-04-19 00:00:00
        Date date = DateUtil.parse(dateStr);
        System.out.println(date);

        //2022/04/19
        String format = DateUtil.format(date, "yyyy/MM/dd");
        System.out.println(format);

        //2022-04-19
        String formatDate = DateUtil.formatDate(date);
        System.out.println(formatDate);

        //2022-04-19 00:00:00
        String formatDateTime = DateUtil.formatDateTime(date);
        System.out.println(formatDateTime);

        //00:00:00
        String formatTime = DateUtil.formatTime(date);
        System.out.println(formatTime);
    }

获取Date对象

/**
     * 获取Date对象的某个部分
     */
    @Test
    public void DatePart(){
        Date date = DateUtil.date();
        System.out.println(DateUtil.year(date));
        //3 + 1
        System.out.println(DateUtil.month(date));
        //APRIL 4月
        System.out.println(DateUtil.monthEnum(date));
    }

开始和结束时间

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

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

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

日期时间偏移

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

        //2022-03-01 22:33:23
        Date date = DateUtil.parse(dateStr);
        System.out.println(date);

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

        //2022-03-04 22:33:23
        DateTime newDate2 = DateUtil.offsetDay(date, 3);
        System.out.println(newDate2);

        //2022-03-01 19:33:23
        DateTime newDate3 = DateUtil.offsetHour(date, -3);
        System.out.println(newDate3);
    }

日期时间差

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

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

        //相差一个月,31天
        long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
        System.out.println(betweenDay);
    }

获取当前日期时间

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

使用对象获取年月日

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

DateTime转字符串

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

<think>好的,我现在需要帮助用户解决如何使用Hutool工具类进行日期格式化的问题。首先,我应该回顾一下用户提供的引用内容,确保正确引用相关信息。用户提到了三个引用,其中引用[1]和[2]是关于Hutool的DateUtil类的使用示例,而引用[3]提到了DatePattern类。 首先,用户的问题明确是使用Hutool进行日期格式化,所以我要先确认Hutool的常用方法。根据引用[1],DateUtil.format方法可以将日期格式化为指定字符串,例如“yyyy年MM月dd日”。而引用[3]提到使用DatePattern中的预定义格式,比如DatePattern.NORM_DATE_FORMAT,这可能是一个方便的方式,避免手动写格式字符串。 接下来,我需要整理出步骤。第一步是引入Hutool的依赖,但用户可能已经完成了这一步,所以可以简要提及。第二步是解析日期字符串为Date对象,使用DateUtil.parse方法,如引用[1]中的示例。第三步是进行格式化,这里有两种方法:使用DateUtil.format配合自定义格式,或者使用DatePattern中的常量。 然后,我应该提供具体的代码示例,覆盖这两种情况。比如,用户可能想将日期格式化为“yyyy-MM-dd”或者“yyyy年MM月dd日”这样的格式。同时,需要注意异常处理,但用户提供的例子中没有处理异常,可能Hutool的parse方法已经处理了一些常见情况,或者用户需要自行处理。不过用户的问题主要集中在格式化,所以可能不需要深入讨论解析时的异常。 另外,用户可能还关心时间差的格式化,如引用[2]中提到的formatBetween方法,可以补充说明这部分,但用户的问题主要是日期格式化,可能时间差是额外的信息,但可以作为扩展内容提及。 需要检查是否有其他功能,比如日期计算或获取特定部分,但用户的问题集中在格式化,所以保持回答聚焦。确保代码示例正确,语法正确,比如在Java中使用静态方法调用,字符串的正确写法等。 最后,生成相关问题时要围绕日期格式化的其他可能性,比如预定义格式、时间差处理、异常情况等。确保问题与用户的内容相关,并且有助于他们进一步探索Hutool的日期功能。 总结步骤: 1. 解析日期字符串为Date对象。 2. 使用DateUtil.format进行自定义格式化。 3. 使用DatePattern预定义格式。 4. 可选的时间格式化。 5. 提供代码示例和注意事项。</think>要使用Hutool工具类实现日期格式化,可以按照以下步骤操作: ### 一、基础日期格式化 1. **解析日期字符串** 使用`DateUtil.parse`方法将字符串转换为`Date`对象: ```java String dateStr = "2023-10-01"; Date date = DateUtil.parse(dateStr); //自动识别常见格式[^1] ``` 2. **自定义格式输出** 通过`DateUtil.format`指定格式字符串: ```java String formattedDate = DateUtil.format(date, "yyyy年MM月dd日"); System.out.println("格式化结果:" + formattedDate); //输出:2023年10月01日 ``` 3. **使用预定义格式** Hutool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大怪~将军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值