王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

今日分享開始啦,請大家多多指教~

最近剛好有空給大家整理下JDK8的特性,這個在實際開發中的作用也是越來越重了,本文重點講解下新的日期時間API。

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

新日期時間API

1。舊版日期時間的問題

在舊版本中JDK對於日期和時間這塊的時間是非常差的。

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

設計不合理,在java。util和java。sql的包中都有日期類,java。util。Date同時包含日期和時間的,而java。sql。Date僅僅包含日期,此外用於格式化和解析的類在java。text包下。

非執行緒安全,java。util。Date是非執行緒安全的,所有的日期類都是可變的,這是java日期類最大的問題之一。

時區處理麻煩,日期類並不提供國際化,沒有時區支援。

2。 新日期時間API介紹

JDK 8中增加了一套全新的日期時間API,這套API設計合理,是執行緒安全的。新的日期及時間API位於 java。time

中,下面是一些關鍵類。

LocalDate :表示日期,包含年月日,格式為 2019-10-16

LocalTime :表示時間,包含時分秒,格式為 16:38:54。158549300

LocalDateTime :表示日期時間,包含年月日,時分秒,格式為 2018-09-06T15:33:56。750

DateTimeFormatter :日期時間格式化類。

Instant:時間戳,表示一個特定的時間瞬間。

Duration:用於計算2個時間(LocalTime,時分秒)的距離

Period:用於計算2個日期(LocalDate,年月日)的距離

ZonedDateTime :包含時區的時間

Java中使用的歷法是ISO 8601日曆系統,它是世界民用曆法,也就是我們所說的公曆。平年有365天,閏年是366天。此外Java 8還提供了4套其他曆法,分別是:

ThaiBuddhistDate:泰國佛教歷

MinguoDate:中華民國曆

JapaneseDate:日本歷

HijrahDate:伊斯蘭曆

2。1 日期時間的常見操作

LocalDate,LocalTime以及LocalDateTime的操作。

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

2。2 日期時間的修改和比較

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

注意:在進行日期時間修改的時候,原來的LocalDate物件是不會被修改,每次操作都是返回了一個新的LocalDate物件,所以在多執行緒場景下是資料安全的。

2。3 格式化和解析操作

在JDK8中我們可以透過java。time。format。DateTimeFormatter類可以進行日期的解析和格式化操作

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

2。4 Instant類

在JDK8中給我們新增一個Instant類(時間戳/時間線),內部儲存了從1970年1月1日 00:00:00以來的秒和納秒

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

2。5 計算日期時間差

JDK8中提供了兩個工具類Duration/Period:計算日期時間差

Duration:用來計算兩個時間差(LocalTime)

Period:用來計算兩個日期差(LocalDate)

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

2。6 時間校正器

有時候我們可以需要如下調整:將日期調整到“下個月的第一天”等操作。這時我們透過時間校正器效果可能會更好。

TemporalAdjuster:時間校正器

TemporalAdjusters:透過該類靜態方法提供了大量的常用TemporalAdjuster的實現。

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

2。7 日期時間的時區

Java8 中加入了對時區的支援,LocalDate、LocalTime、LocalDateTime是不帶時區的,帶時區的日期時間類分別為:ZonedDate、ZonedTime、ZonedDateTime。

其中每個時區都對應著 ID,ID的格式為 “區域/城市” 。例如 :Asia/Shanghai 等。

ZoneId:該類中包含了所有的時區資訊

王炸!華為大牛帶你盤點JDK8中鮮為人知的使用技巧,網友:已收藏

JDK新的日期和時間API的優勢:

新版日期時間API中,日期和時間物件是不可變,操作日期不會影響原來的值,而是生成一個新的例項

提供不同的兩種方式,有效

的區

分了人和機器的操作

TemporalAdjuster可以更精確的操作日期,還可以自定義日期調整期

執行緒安全

~好了,新的日期時間API真的很好用,快換掉以前的Date吧!!!

今日份分享已結束,請大家多多包涵和指點!

相關文章