知識的工作者必須成為自己時間的首席執行官。
<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:泥瓦匠有個小圈子,裡面喜歡加入一些文藝的程式員。愛技術,愛生活,愛藝術~ 雨神就愛彈琴,日語思密達*&#@#% )
常用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 代碼互操作如下圖:

實戰中的 jdk8 ,show the code。 在用的項目,完善測試時候用起來才是關鍵。自然需要 jdk 環境支援,更新吧更新吧。
基于 jdk 8 time包的實踐,這次隻講了 localdatetime 類,慢慢帶來更多。
如以上文章或連結對你有幫助的話,别忘了在文章結尾處評論哈~ 你也可以點選頁面右邊“分享”懸浮按鈕哦,讓更多的人閱讀這篇文章。