当前位置:网站首页>4hutool实战:DateUtil-格式化时间[通俗易懂]
4hutool实战:DateUtil-格式化时间[通俗易懂]
2022-07-01 09:39:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
java的SimpleDateFormat线程不安全出问题了,虚竹教你多种解决方案(万字长文*建议收藏)
java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)
java8 新日期时间API((二)JSR-310:常用的日期时间API)
java8 新日期时间API((三)JSR-310:格式化和解析)
java8 新日期时间API((四)JSR-310:常用计算工具)
java8 新日期时间API((五)JSR-310:实战+源码分析)
hutool日期时间系列文章
2DateUtil(时间工具类)-常用的时间类型Date,DateTime,Calendar和TemporalAccessor(LocalDateTime)转换
9LocalDateTimeUtil(JDK8+中的{@link LocalDateTime} 工具类封装)
10TemporalAccessorUtil{@link TemporalAccessor} 工具类封装
用途:格式化时间
使用场景
把日期按照不同的需求格式化成对应的日期字符串
项目引用
此博文的依据:hutool-5.6.5版本源码
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.5</version>
</dependency>方法摘要
方法 | 描述 |
|---|---|
cn.hutool.core.date.DateUtil.formatLocalDateTime(java.time.LocalDateTime) | 格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss |
cn.hutool.core.date.DateUtil.format(java.time.LocalDateTime, java.lang.String) | 根据特定格式格式化日期 |
cn.hutool.core.date.DateUtil.format(java.util.Date, java.lang.String) | 根据特定格式格式化日期 |
cn.hutool.core.date.DateUtil.format(java.util.Date, cn.hutool.core.date.format.DatePrinter) | 根据特定格式格式化日期 |
cn.hutool.core.date.DateUtil.format(java.util.Date, java.text.DateFormat) | 根据特定格式格式化日期 |
cn.hutool.core.date.DateUtil.format(java.util.Date, java.time.format.DateTimeFormatter) | 根据特定格式格式化日期 |
cn.hutool.core.date.DateUtil.formatDateTime(java.util.Date) | 格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss |
cn.hutool.core.date.DateUtil.formatDate(java.util.Date) | 格式化日期部分(不包括时间)<br> 格式 yyyy-MM-dd |
cn.hutool.core.date.DateUtil.formatTime(java.util.Date) | 格式化时间<br> 格式 HH:mm:ss |
cn.hutool.core.date.DateUtil.formatHttpDate(java.util.Date) | 格式化为Http的标准日期格式<br> 标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT |
cn.hutool.core.date.DateUtil.formatChineseDate(java.util.Date, boolean, boolean) | 格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日 |
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatLocalDateTime(java.time.LocalDateTime)
方法描述
格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
LocalDateTime localDateTime | localDateTime 被格式化的日期 |
返回值:
格式化后的字符串
参考案例:
String strDate = "2019-12-01 17:02:30";
LocalDateTime ldt = DateUtil.parseLocalDateTime(strDate);
String strDate1 = DateUtil.formatLocalDateTime(ldt);
Assert.assertEquals(strDate, strDate1);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.format(java.time.LocalDateTime, java.lang.String)
方法描述
根据特定格式格式化日期
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
LocalDateTime localDateTime | localDateTime 被格式化的日期 |
String format | format 日期格式,常用格式见: {@link DatePattern} |
返回值:
格式化后的字符串
参考案例:
String strDate2 = "2019-12-01 17:02:30.111";
ldt = DateUtil.parseLocalDateTime(strDate2, DatePattern.NORM_DATETIME_MS_PATTERN);
strDate1 = DateUtil.format(ldt, DatePattern.NORM_DATETIME_PATTERN);
Assert.assertEquals(strDate, strDate1);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.lang.String)
方法描述
根据特定格式格式化日期
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
String format | format 日期格式,常用格式见: {@link DatePattern} |
返回值:
格式化后的字符串
参考案例:
String strDate = "2021-05-16";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date localDate = sdf.parse(strDate);
Assert.assertEquals(strDate, DateUtil.format(localDate, DatePattern.NORM_DATE_PATTERN));源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, cn.hutool.core.date.format.DatePrinter)
方法描述
根据特定格式格式化日期
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
DatePrinter format | format {@link DatePrinter} 或 {@link FastDateFormat} |
返回值:
格式化后的字符串
参考案例:
//根据特定格式格式化日期
String str = "2021-05-16";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
Date date = DateUtil.parse(str);
String dateStr = DateUtil.format(date,sdf);
System.out.println(dateStr);
Assert.assertEquals(str, dateStr);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.text.DateFormat)
方法描述
根据特定格式格式化日期
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
DateFormat format | format {@link SimpleDateFormat} |
返回值:
格式化后的字符串
参考案例:
待补充源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.time.format.DateTimeFormatter)
方法描述
根据特定格式格式化日期
支持版本及以上
5.0.0
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
DateTimeFormatter format | format {@link SimpleDateFormat} |
返回值:
格式化后的字符串
参考案例:
//根据特定格式格式化日期
String str = "2021-05-16";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.US);
Date date = DateUtil.parse(str);
String dateStr = DateUtil.format(date,dtf);
System.out.println(dateStr);
Assert.assertEquals(str, dateStr);
// 此方法有问题,官方已处理 处理版本是5.7.5 修复
java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatDateTime(java.util.Date)
方法描述
格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
返回值:
格式化后的日期
参考案例:
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
String format = DateUtil.format(date, "yyyy/MM/dd");
Assert.assertEquals("2017/03/01", format);
// 常用格式的格式化
String formatDate = DateUtil.formatDate(date);
Assert.assertEquals("2017-03-01", formatDate);
String formatDateTime = DateUtil.formatDateTime(date);
Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
String formatTime = DateUtil.formatTime(date);
Assert.assertEquals("00:00:00", formatTime);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatDate(java.util.Date)
方法描述
格式化日期部分(不包括时间)<br> 格式 yyyy-MM-dd
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
返回值:
格式化后的字符串
参考案例:
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
String format = DateUtil.format(date, "yyyy/MM/dd");
Assert.assertEquals("2017/03/01", format);
// 常用格式的格式化
String formatDate = DateUtil.formatDate(date);
Assert.assertEquals("2017-03-01", formatDate);
String formatDateTime = DateUtil.formatDateTime(date);
Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
String formatTime = DateUtil.formatTime(date);
Assert.assertEquals("00:00:00", formatTime);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatTime(java.util.Date)
方法描述
格式化时间<br> 格式 HH:mm:ss
支持版本及以上
3.0.1
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
返回值:
格式化后的字符串
参考案例:
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);
String format = DateUtil.format(date, "yyyy/MM/dd");
Assert.assertEquals("2017/03/01", format);
// 常用格式的格式化
String formatDate = DateUtil.formatDate(date);
Assert.assertEquals("2017-03-01", formatDate);
String formatDateTime = DateUtil.formatDateTime(date);
Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
String formatTime = DateUtil.formatTime(date);
Assert.assertEquals("00:00:00", formatTime);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatHttpDate(java.util.Date)
方法描述
格式化为Http的标准日期格式<br> 标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT
支持版本及以上
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
返回值:
HTTP标准形式日期字符串
参考案例:
String formatHttpDate = DateUtil.formatHttpDate(DateUtil.parse("2019-01-02 22:32:01"));
Assert.assertEquals("Wed, 02 Jan 2019 14:32:01 GMT", formatHttpDate);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
方法明细
方法名称:cn.hutool.core.date.DateUtil.formatChineseDate(java.util.Date, boolean, boolean)
方法描述
格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日
支持版本及以上
5.3.9
参数描述:
参数名 | 描述 |
|---|---|
Date date | date 被格式化的日期 |
boolean isUppercase | isUppercase 是否采用大写形式 |
boolean withTime | withTime 是否包含时间部分 |
返回值:
中文日期字符串
参考案例:
String formatChineseDate = DateUtil.formatChineseDate(DateUtil.parse("2018-02-24"), true, false);
Assert.assertEquals("二〇一八年二月二十四日", formatChineseDate);源码解析:
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131752.html原文链接:https://javaforall.cn
边栏推荐
- Closure implementation iterator effect
- Who has the vision to cross the cycle?
- 睡了二哥。。。
- A 419 error occurred in the laravel postman submission form. July 6th, 2020 diary.
- [untitled]
- UE small knowledge point controller possess pawn process
- JS prototype chain
- delete和delete[]引发的问题
- NoSQL数据库的安装和使用
- 【leetcode】287. Find duplicates
猜你喜欢

历史上的今天:九十年代末的半导体大战;冯·诺依曼发表第一份草案;CBS 收购 CNET...

dsPIC30F6014a LCD 方块显示

ESP8266 FreeRTOS开发环境搭建
![delete和delete[]引发的问题](/img/d9/a1c3e5ce51ef1be366a973aa42d1f0.png)
delete和delete[]引发的问题

Nacos service configuration and persistence configuration

How to realize the usage of connecting multiple databases in idel

Tearful eyes, it's not easy to change jobs. Three rounds of interviews, four hours of soul torture

集成积木报表报错 org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常

JS原型链

JS scope chain and closure
随机推荐
NoSQL数据库的安装和使用
Analysis and solution of JS this loss
Unity tips for reducing the amount of code -- empty protection extension
集成积木报表报错 org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
Ubuntu系统安装与配置MySQL
Mikrotik Routeros Internet access settings
CSDN一站式云服务开放内测,诚邀新老用户来抢鲜
A 419 error occurred in the laravel postman submission form. July 6th, 2020 diary.
利用闭包实现私有变量
BSN长话短说之十:如何保证NFT的安全
Dotnet console uses microsoft Maui. Getting started with graphics and skia
SQL learning notes (01) - basic knowledge of database
What is P in cap theory
Flinkv1.13 implementation of financial anti fraud cases
【无标题】
Upload labs for file upload - white box audit
Flinkv1.13实现金融反诈骗案例
JS prototype chain
7-Zip 遭抵制?呼吁者定下“三宗罪”:伪开源、不安全、作者来自俄罗斯!
[unity rendering] customized screen post-processing