使用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ì)象。 |