天天看點

代碼片段:基于 JDK 8 time包的時間工具類 TimeUtil一、 Java 8 time包二、介紹 LocalDateTime & DateTimeFormatter APIs三、TimeUtil 代碼詳解四、與 Old 代碼互操作五、小結

知識的工作者必須成為自己時間的首席執行官。

<b>前言</b>

這次泥瓦匠帶來的是一個好玩的基于 jdk 8 time包的時間工具類 timeutil。本意,用 jdk 8 寫個實戰的時間工具類,初版泥瓦匠寫的很不好,後來雨神分分鐘将這個代碼優化優化,謝謝雨神。就此分享下這個代碼,讓更多的人看到~

從 java 1.0 有個 date 類,想必大家不陌生,後面有了 calendar 類(被廢棄 )。api 确實比較難用,是以 java 8 引入 java.time api,這次看看是不是很好用。大緻引入了這幾個對象:

instant - 瞬間類,表示時間線上的一點(與 date 類似)

duration - 持續時間,表示兩個 instant 之間的時間

localdatetime - 本地日期時間,表示一個日期和時間。

本小文重點還是在使用 localdatetime 及其格式化類 datetimeformatter。

localdatetime 表示一個日期和時間,存儲确定時區中的某個時間點。

例如某一次練書法彈琴活動。(ps:泥瓦匠有個小圈子,裡面喜歡加入一些文藝的程式員。愛技術,愛生活,愛藝術~ 雨神就愛彈琴,日語思密達*&amp;#@#% )

常用api:

now()

從系統中擷取目前時間

parse(charsequence text, datetimeformatter formatter)

從字元串按格式擷取 localdatetime 執行個體

datetimeformatter 用于格式化時間,提供了公用的方法入口,列印和解析格式化的時間類。

format(temporalaccessor temporal)

按格式格式化時間

ofpattern(string pattern)

按字元串指定的格式,生成時間格式

泥瓦匠一一道來這個代碼的實作。先看代碼:

工具類由 final timeutil類 及 其内部枚舉類timeformat時間格式類 組成。

a. timeutil 具有私有構造函數,表示被保護,無法被外部 new 出執行個體。聲明了預設的 datetimeformatter 時間格式:yyyy-mm-dd hh:mm:ss。其他則是提供了 擷取目前時間 和 時間與string互轉的方法。

b. timeformat 内部枚舉類,首先它是單例的。transient 關鍵字目的是確定 datetimeformatter 無序列化存儲。為啥單例,因為 datetimeformmatter 是無狀态的,可以線程共享。

具體方法解析如下:

1. 擷取目前時間

2. 擷取目前相應格式的目前時間

3. string 轉時間

4. 時間轉 string

java.time 類與 old date 代碼互操作如下圖:

代碼片段:基于 JDK 8 time包的時間工具類 TimeUtil一、 Java 8 time包二、介紹 LocalDateTime &amp; DateTimeFormatter APIs三、TimeUtil 代碼詳解四、與 Old 代碼互操作五、小結

實戰中的 jdk8 ,show the code。 在用的項目,完善測試時候用起來才是關鍵。自然需要 jdk 環境支援,更新吧更新吧。

基于 jdk 8 time包的實踐,這次隻講了 localdatetime 類,慢慢帶來更多。

如以上文章或連結對你有幫助的話,别忘了在文章結尾處評論哈~ 你也可以點選頁面右邊“分享”懸浮按鈕哦,讓更多的人閱讀這篇文章。