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

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

 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);
    }
目录
相关文章
|
监控 网络协议 安全
华为配置防火墙直连路由器出口实验
华为配置防火墙直连路由器出口实验
1189 6
|
JSON 数据格式
JSON - JSON.toJSONString 格式化成 JSON 字符串时保留 null 属性
JSON - JSON.toJSONString 格式化成 JSON 字符串时保留 null 属性
2335 0
|
Java
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
【MQTT异常】mqtt.inbound.MqttPahoMessageDrivenChannelAdapter Lost connection: 已断开连接; retrying...
1473 0
|
Cloud Native Go 项目管理
敏捷项目管理解锁:2023年使用YouTrack的全面指南
敏捷项目管理解锁:2023年使用YouTrack的全面指南
4176 0
|
5月前
|
人工智能 Java API
【SpringAIAlibaba新手村系列】(2)Ollama 本地大模型调用
本章详解如何用Spring AI接入Ollama本地大模型:解决远程调用的联网依赖、隐私泄露与费用问题;支持Qwen、Llama等开源模型,零成本、低延迟、全离线运行;重点掌握`@Qualifier`多模型注入、流式响应(Flux)及本地API(`http://localhost:11434`)集成。
1706 5
|
JSON 算法 Java
Hutool包常用工具类的使用
Hutool包常用工具类的使用
|
人工智能 数据可视化 测试技术
Apifox与Apipost对比,2025年功能对比与选项建议
Apifox 和 Apipost 作为国内 API 一体化协作平台的佼佼者,都在不断进化,力求为用户提供更全面的解决方案。本文将聚焦“2025 版”,基于两款工具截至 2024 年末至 2025 年中旬的预期功能和行业发展趋势,进行一次全方位、深度的功能对比,旨在为开发者、测试工程师、产品经理及技术决策者在选型时提供有价值的参考。
3552 123
|
人工智能 前端开发 JavaScript
SpringBoot实现网页消息推送的5种方法
本文详细介绍了在SpringBoot中实现网页消息推送的几种主流方案,包括短轮询、长轮询、SSE(Server-Sent Events)、WebSocket以及STOMP。每种方案各有优缺点,适用于不同的场景需求。短轮询简单易实现但效率低;长轮询提升了实时性但仍有限制;SSE适合单向通信且轻量高效;WebSocket支持全双工通信,适合高实时性要求的场景;STOMP基于WebSocket,提供更高级的消息传递功能。通过对比分析,开发者可根据业务需求、性能要求及浏览器兼容性选择最适合的技术方案,同时可结合多种技术实现优雅降级,优化用户体验。
2307 57
|
存储 监控 C++
11 个必备 Docker 工具
11 个必备 Docker 工具
3126 11
11 个必备 Docker 工具
|
JSON 算法 Java
hutool工具的简单使用
这篇文章介绍了Hutool工具库的基本使用,通过代码示例展示了如何利用Hutool进行字符串处理、文件操作、集合操作、加密解密、日期时间处理、网络请求和读取资源文件等常见任务。
853 0
hutool工具的简单使用