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系統所需要標準的日期時間格式,能提供更方便且符合實際開發需求的效果喔!

相關學習資源