大家好,又见面了,我是你们的朋友全栈君。
技术活,该赏
关注+一键三连(点赞,评论,收藏)再看,养成好习惯
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
支持版本及以上
参数描述:
参数名 | 描述 |
---|---|
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(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131752.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...