鍍金池/ 教程/ Java/ Java8 日期時(shí)間API
Java8數(shù)據(jù)流
Java8默認(rèn)方法
Java8 Optional類
Java8 Base64
Java8期間及持續(xù)時(shí)間
Java8函數(shù)式接口
Java8 日期時(shí)間API
Java8 本地DateTime API
Java8教程
Java8 Lambda表達(dá)式
Java8環(huán)境設(shè)置
Java8向后兼容
Java8 時(shí)間調(diào)節(jié)器
Java8 ChronoUnits枚舉
Java8方法引用
Java8 Nashorn JavaScript引擎
Java8 時(shí)區(qū)DateTime API

Java8 日期時(shí)間API

使用Java8,新的日期時(shí)間API引入覆蓋舊的日期時(shí)間API的以下缺點(diǎn)。

  • 非線程安全 - java.util.Date不是線程安全的,因此開(kāi)發(fā)者必須在使用日期處理并發(fā)性問(wèn)題。新的日期時(shí)間API是不可變的,并且沒(méi)有setter方法。

  • 設(shè)計(jì)不佳 - 默認(rèn)的開(kāi)始日期從1900年,開(kāi)始每月從1天從0開(kāi)始,所以沒(méi)有統(tǒng)一。不直接使用方法操作日期。新的API提供了這樣操作實(shí)用方法。

  • 困難的時(shí)區(qū)處理 - 開(kāi)發(fā)人員必須編寫(xiě)大量的代碼來(lái)處理時(shí)區(qū)的問(wèn)題。新的API設(shè)計(jì)開(kāi)發(fā)保持特定領(lǐng)域設(shè)計(jì)。

JAVA8引入了java.time包 - 下一個(gè)新的日期時(shí)間API。以下是一些在java.time程序包引入重要的類。

  • 本地 - 簡(jiǎn)化日期時(shí)間API,沒(méi)有時(shí)間處理區(qū)的復(fù)雜性。

  • 時(shí)區(qū) - 專業(yè)的日期時(shí)間API來(lái)處理各種時(shí)區(qū)。

SN 使用描述方法
1 本地日期時(shí)間API 
LocalDate/本地時(shí)間和LocalDateTime類簡(jiǎn)化時(shí)區(qū)不需要開(kāi)發(fā)。
2 時(shí)區(qū)日期時(shí)間API
時(shí)區(qū)日期時(shí)間API使用的時(shí)區(qū)是需要考慮的。
3 計(jì)時(shí)單位枚舉
java.time.temporal.ChronoUnit枚舉在Java8添加,以取代舊的API用來(lái)代表日,月等整數(shù)值
4 周期和持續(xù)時(shí)間
這些類引入到處理時(shí)間的差異。
5 時(shí)間調(diào)節(jié)器
TemporalAdjuster是做數(shù)學(xué)日期。例如,要獲得“本月第二個(gè)星期六”或“下周二”。
6 向后兼容性
toInstant()方法被添加到可用于將它們轉(zhuǎn)換到新的日期時(shí)間的API原始日期和日歷對(duì)象。