使用Java8,新的日期時間API引入覆蓋舊的日期時間API的以下缺點。
• 非線程安全:java.util.Date不是線程安全的,因此開發(fā)者必須在使用日期處理并發(fā)性問題。新的日期時間API是不可變的,并且沒有setter方法。
• 設(shè)計不佳: 默認(rèn)的開始日期從1900年,開始每月從1天從0開始,所以沒有統(tǒng)一。不直接使用方法操作日期。新的API提供了這樣操作實用方法。
• 困難的時區(qū)處理: 開發(fā)人員必須編寫大量的代碼來處理時區(qū)的問題。新的API設(shè)計開發(fā)保持特定領(lǐng)域設(shè)計。
JAVA8引入了java.time包 - 下一個新的日期時間API。以下是一些在java.time程序包引入重要的類。
• 本地 :簡化日期時間API,沒有時間處理區(qū)的復(fù)雜性。
• 時區(qū) :專業(yè)的日期時間API來處理各種時區(qū)。
SN |
使用描述方法 |
---|---|
1 |
本地日期時間API LocalDate/本地時間和LocalDateTime類簡化時區(qū)不需要開發(fā)。 |
2 |
時區(qū)日期時間API 時區(qū)日期時間API使用的時區(qū)是需要考慮的。 |
3 |
計時單位枚舉 java.time.temporal.ChronoUnit枚舉在Java8添加,以取代舊的API用來代表日,月等整數(shù)值。 |
4 |
周期和持續(xù)時間 這些類引入到處理時間的差異。 |
5 |
時間調(diào)節(jié)器 TemporalAdjuster是做數(shù)學(xué)日期。例如,要獲得“本月第二個星期六”或“下周二”。 |
6 |
向后兼容性 toInstant()方法被添加到可用于將它們轉(zhuǎn)換到新的日期時間的API原始日期和日歷對象。 |