5hutool实战:DateUtil-解析被格式化的时间

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 5hutool实战:DateUtil-解析被格式化的时间

image.png

hutool实战(带你掌握里面的各种工具)目录

万字博文教你搞懂java源码的日期和时间相关用法


用途:格式化时间

使用场景

把日期按照不同的需求格式化成对应的日期字符串

项目引用

此博文的依据:hutool-5.6.5版本源码image.png

方法摘要

image.pngimage.png方法明细

方法名称:cn.hutool.core.date.DateUtil.parseLocalDateTime(java.lang.CharSequence)

方法描述

构建LocalDateTime对象


格式:yyyy-MM-dd HH:mm:ss


支持版本及以上

参数描述:image.pngimage.pngimage.png

返回值:

DateTime对象

参考案例:

        String dateStr = "Wed Sep 16 11:26:23 CST 2009";
    SimpleDateFormat sdf = new SimpleDateFormat(DatePattern.JDK_DATETIME_PATTERN, Locale.US);
    sdf.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
    final DateTime parse = DateUtil.parse(dateStr, sdf);
    FastDateFormat fdf = FastDateFormat.getInstance(DatePattern.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("America/Chicago"), Locale.US);
    final DateTime parse2 = DateUtil.parse(dateStr, fdf);
    Assert.assertEquals(parse, parse2);

image.pngimage.pngimage.png

参考案例:

    String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy-MM-dd",Locale.US).toString(DatePattern.PURE_DATE_PATTERN);
    Assert.assertEquals("20210516", ymd);

image.png

        String ymd = DateUtil.parse("2021-05-16 21:20:15", "yyyy/MM/dd HH:mm:ss","yyyy.MM.dd HH:mm:ss","yyyy-MM-dd HH:mm:ss").toString(DatePattern.PURE_DATE_PATTERN);
    Assert.assertEquals("20210516", ymd);

image.pngimage.pngimage.pngimage.png

参考案例:

    String dateStr1 = "2018-09-13T05:34:31Z";
    DateTime dt = DateUtil.parseUTC(dateStr1);
    // parse方法支持UTC格式测试
    DateTime dt2 = DateUtil.parse(dateStr1);
    Assert.assertEquals(dt, dt2);
    // 默认使用Pattern对应的时区,即UTC时区
    String dateStr = dt.toString();
    Assert.assertEquals("2018-09-13 05:34:31", dateStr);
    // 使用当前(上海)时区
    dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
    Assert.assertEquals("2018-09-13 13:34:31", dateStr);
    dateStr1 = "2018-09-13T13:34:32+0800";
    dt = DateUtil.parseUTC(dateStr1);
    dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
    Assert.assertEquals("2018-09-13 13:34:32", dateStr);
    dateStr1 = "2018-09-13T13:34:33+08:00";
    dt = DateUtil.parseUTC(dateStr1);
    dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
    Assert.assertEquals("2018-09-13 13:34:33", dateStr);
    dateStr1 = "2018-09-13T13:34:34+0800";
    dt = DateUtil.parse(dateStr1);
    assert dt != null;
    dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
    Assert.assertEquals("2018-09-13 13:34:34", dateStr);
    dateStr1 = "2018-09-13T13:34:35+08:00";
    dt = DateUtil.parse(dateStr1);
    assert dt != null;
    dateStr = dt.toString(TimeZone.getTimeZone("GMT+8:00"));
    Assert.assertEquals("2018-09-13 13:34:35", dateStr);
    dateStr1 = "2018-09-13T13:34:36.999+0800";
    dt = DateUtil.parseUTC(dateStr1);
    final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DatePattern.NORM_DATETIME_MS_PATTERN);
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    dateStr = dt.toString(simpleDateFormat);
    Assert.assertEquals("2018-09-13 13:34:36.999", dateStr);
    dateStr1 = "2018-09-13T13:34:37.999+08:00";
    dt = DateUtil.parseUTC(dateStr1);
    dateStr = dt.toString(simpleDateFormat);
    Assert.assertEquals("2018-09-13 13:34:37.999", dateStr);
    dateStr1 = "2018-09-13T13:34:38.999+0800";
    dt = DateUtil.parse(dateStr1);
    assert dt != null;
    dateStr = dt.toString(simpleDateFormat);
    Assert.assertEquals("2018-09-13 13:34:38.999", dateStr);
    dateStr1 = "2018-09-13T13:34:39.999+08:00";
    dt = DateUtil.parse(dateStr1);
    assert dt != null;
    dateStr = dt.toString(simpleDateFormat);
    Assert.assertEquals("2018-09-13 13:34:39.999", dateStr);
    // 使用UTC时区
    dateStr1 = "2018-09-13T13:34:39.99";
    dt = DateUtil.parse(dateStr1);
    assert dt != null;
    dateStr = dt.toString();
    Assert.assertEquals("2018-09-13 13:34:39", dateStr);

image.pngimage.png方法明细

方法名称:cn.hutool.core.date.DateUtil.parse(java.lang.CharSequence)

方法描述

将日期字符串转换为{@link DateTime}对象,格式:


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

支持版本及以上

参数描述:image.png


image.png

目录
相关文章
|
3天前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
31 13
|
12天前
|
数据采集 DataWorks 搜索推荐
阿里云DataWorks深度评测:实战视角下的全方位解析
在数字化转型的大潮中,高效的数据处理与分析成为企业竞争的关键。本文深入评测阿里云DataWorks,从用户画像分析最佳实践、产品体验、与竞品对比及Data Studio公测体验等多角度,全面解析其功能优势与优化空间,为企业提供宝贵参考。
73 13
|
8天前
|
数据采集 存储 JavaScript
网页爬虫技术全解析:从基础到实战
在信息爆炸的时代,网页爬虫作为数据采集的重要工具,已成为数据科学家、研究人员和开发者不可或缺的技术。本文全面解析网页爬虫的基础概念、工作原理、技术栈与工具,以及实战案例,探讨其合法性与道德问题,分享爬虫设计与实现的详细步骤,介绍优化与维护的方法,应对反爬虫机制、动态内容加载等挑战,旨在帮助读者深入理解并合理运用网页爬虫技术。
|
15天前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
21天前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
27 1
|
28天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
1月前
|
安全 Java 开发者
AOP中的JDK动态代理与CGLIB动态代理:深度解析与实战模拟
【11月更文挑战第21天】面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,它通过将横切关注点(cross-cutting concerns)与业务逻辑分离,以提高代码的可维护性和可重用性。在Java开发中,AOP的实现离不开动态代理技术,其中JDK动态代理和CGLIB动态代理是两种常用的方式。本文将从背景、历史、功能点、业务场景、底层逻辑等多个维度,深度解析这两种代理方式的区别,并通过Java示例进行模拟和比较。
44 4
|
1月前
|
JSON API 开发者
微店(Weidian)商品详情API接口解析实战
微店(Weidian)是一个基于社交关系的电商平台,为商家提供了一整套的电商解决方案。微店API接口允许开发者通过编程方式访问和操作微店平台上的数据,从而可以创建自动化的工具、应用或集成服务。
|
1月前
|
前端开发 中间件 PHP
PHP框架深度解析:Laravel的魔力与实战应用####
【10月更文挑战第31天】 本文作为一篇技术深度好文,旨在揭开PHP领域璀璨明星——Laravel框架的神秘面纱。不同于常规摘要的概括性介绍,本文将直接以一段引人入胜的技术剖析开场,随后通过具体代码示例和实战案例,逐步引导读者领略Laravel在简化开发流程、提升代码质量及促进团队协作方面的卓越能力。无论你是PHP初学者渴望深入了解现代开发范式,还是经验丰富的开发者寻求优化项目架构的灵感,本文都将为你提供宝贵的见解与实践指导。 ####
|
1月前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
45 0

推荐镜像

更多
下一篇
DataWorks