Java SE8 Date與Time
戴玉佩 Patty Tai
- 恆逸教育訓練中心-資深講師
- 技術分類:程式設計
任何的應用系統開發,總是需要用到日期或時間這樣的型別。過去在Java SE的標準API程式庫中,我們只有一種選擇:java.util.Date,使用Date類別建立的物件中同時包括了日期與時間資料,除了將Date物件分別轉換為日期字串或時間字串,Date物件是無法依據實務需求將這日期、時間分開處理。不過在Java SE 8 API中,總算提供了一組新的套件:java.time.*,這裡提供了包括LocalDate(日期)、LocalTime(時間)、LocalDateTime(日期時間)…。
以下為各種常用功能的示範與比較。
-
建立[現在]的日期或時間物件:
//java.util.Date Date date = new Date(); System.out.println("date = " + date); //java.time.* LocalDate dateNow = LocalDate.now(); System.out.println("dateNow = " + dateNow); LocalTime timeNow = LocalTime.now(); System.out.println("timeNow = " + timeNow); LocalDateTime dateTimeNow = LocalDateTime.now(); System.out.println("dateTimeNow = " + dateTimeNow);
以上程式碼將產生這樣的輸出結果:
date = Wed Dec 13 21:45:58 CST 2017 dateNow = 2017-12-13 timeNow = 21:45:59.445 dateTimeNow = 2017-12-13T21:45:59.445
-
產生指定的日期或時間:
//java.util.Date, java.util.GregorianCalendar,產生日期為1999/9/9的Date物件 Date theDate = new GregorianCalendar(1999,9-1,9).getTime(); System.out.println("theDate = " + theDate); //java.time.*, 產生日期為1999/9/9的LocalDate物件 LocalDate theLoacalDate = LocalDate.of(1999,9,9); System.out.println("theLoacalDate = " + theLoacalDate); //產生時間為09:09的LocalTIme物件 LocalTime theLocalTime = LocalTime.of(9,9); System.out.println("theLocalTime = " + theLocalTime); //產生1999/9/9 09:09的LocalDateTIme物件 LocalDateTime theLocalDateTime = LocalDateTime.of(1999,9,9,9,9); System.out.println("theLocalDateTime = " + theLocalDateTime);
以上程式碼將產生這樣的輸出結果:
theDate = Thu Sep 09 00:00:00 CST 1999 theLoacalDate = 1999-09-09 theLocalTime = 09:09 theLocalDateTime = 1999-09-09T09:09
從上述的示範可以發現,LocalDate, LocalTime, LocalDateTime除了可以將日期時間依需求分開或共同處理,而且toString()產生的字串也符合Web系統所需要標準的日期時間格式,能提供更方便且符合實際開發需求的效果喔!