原文:http://www.yiibai.com/java8/java8_localdateapi.htmlhtml
使用Java8,新的日期時間API引入覆蓋舊的日期時間API的如下缺點。java
非線程安全 - java.util.Date不是線程安全的,所以開發者必須在使用日期處理併發性問題。新的日期時間API是不可變的,而且沒有setter方法。api
設計不佳 - 默認的開始日期從1900年,開始每個月從1天從0開始,因此沒有統一。不直接使用方法操做日期。新的API提供了這樣操做實用方法。安全
困難的時區處理 - 開發人員必須編寫大量的代碼來處理時區的問題。新的API設計開發保持特定領域設計。併發
Java8Tester.javayii
import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Month; public class Java8Tester { public static void main(String args[]){ Java8Tester java8tester = new Java8Tester(); java8tester.testLocalDateTime(); } public void testLocalDateTime(){ // Get the current date and time LocalDateTime currentTime = LocalDateTime.now(); System.out.println("Current DateTime: " + currentTime); LocalDate date1 = currentTime.toLocalDate(); System.out.println("date1: " + date1); Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("Month: " + month +"day: " + day +"seconds: " + seconds ); LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012); System.out.println("date2: " + date2); //12 december 2014 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println("date3: " + date3); //22 hour 15 minutes LocalTime date4 = LocalTime.of(22, 15); System.out.println("date4: " + date4); //parse a string LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("date5: " + date5); } }
使用javac編譯器編譯以下類spa
C:\JAVA>javac Java8Tester.java
如今運行Java8Tester看到的結果線程
C:\JAVA>java Java8Tester
看到結果設計
Current DateTime: 2014-12-09T11:00:45.457 date1: 2014-12-09 Month: DECEMBERday: 9seconds: 45 date2: 2012-12-10T11:00:45.457 date3: 2014-12-12 date4: 22:15 date5: 20:15:30