大家好,又見面了,我是你們的朋友全棧君。
hutool實戰(帶你掌握裡面的各種工具)目錄
萬字博文教你搞懂java源碼的日期和時間相關用法
java的SimpleDateFormat線程不安全出問題了,虛竹教你多種解決方案(萬字長文*建議收藏)
要探索JDK的核心底層源碼,那必須掌握native用法
源碼分析:JDK擷取預設時區的風險和最佳實踐
java8 新日期時間API((一)JSR-310:ZoneId 時區和偏移量)
java8 新日期時間API((二)JSR-310:常用的日期時間API)
java8 新日期時間API((三)JSR-310:格式化和解析)
java8 新日期時間API((四)JSR-310:常用計算工具)
java8 新日期時間API((五)JSR-310:實戰+源碼分析)
時區的規則發生變化時,如何同步JDK的時區規則
JSR-310判斷是否閏年實作,發現原作者的代碼可能有問題
hutool日期時間系列文章
1DateUtil(時間工具類)-目前時間和目前時間戳
2DateUtil(時間工具類)-常用的時間類型Date,DateTime,Calendar和TemporalAccessor(LocalDateTime)轉換
3DateUtil(時間工具類)-擷取日期的各種内容
4DateUtil(時間工具類)-格式化時間
5DateUtil(時間工具類)-解析被格式化的時間
6DateUtil(時間工具類)-時間偏移量擷取
7DateUtil(時間工具類)-日期計算
8ChineseDate(農曆日期工具類)
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
本文參與 騰訊雲自媒體分享計劃 ,歡迎熱愛寫作的你一起參與!
本文分享自作者個人站點/部落格
複制
如有侵權,請聯系 [email protected] 删除。