LocalDate/LocalDateTime與String的互相轉換示例

轉換示例

LocalDate轉String

代碼

    @Test
    public void LocalDate轉String() {        
        LocalDate date = LocalDate.now();
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String dateStr = date.format(fmt);
        System.out.println("LocalDate轉String:"+dateStr);
    }

控制檯輸出結果

LocalDate轉String:2017-11-21

LocalDateTime轉String

代碼

    @Test
    public void LocalDateTime轉String() {        
        LocalDateTime dateTime = LocalDateTime.now();
        
        //使用預定義實例來轉換
        DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE;
        String dateStr = dateTime.format(fmt);
        System.out.println("LocalDateTime轉String[預定義]:"+dateStr);
        
        //使用pattern來轉換      
        //12小時制與24小時制輸出由hh的大小寫決定
        DateTimeFormatter fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS");
        String dateStr12 = dateTime.format(fmt12);
        System.out.println("LocalDateTime轉String[pattern](12小時制):"+dateStr12);
        
        DateTimeFormatter fmt24 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");       
        String dateStr24 = dateTime.format(fmt24);      
        System.out.println("LocalDateTime轉String[pattern](24小時制):"+dateStr24);
        
        //如果想要給12小時制時間加上am/pm,這樣子做:
        fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS a");
        dateStr12 = dateTime.format(fmt12);
        System.out.println("LocalDateTime轉String[pattern](12小時制帶am/pm):"+dateStr12);
    }

控制檯輸出結果

LocalDateTime轉String[預定義]:2017-11-21
LocalDateTime轉String[pattern](12小時制):2017-11-21 02:51:51:550
LocalDateTime轉String[pattern](24小時制):2017-11-21 14:51:51:550
LocalDateTime轉String[pattern](12小時制帶am/pm):2017-11-21 02:51:51:550 下午

String轉LocalDate和LocalDateTime

代碼

    @Test
    public void String轉LocalDate和LocalDateTime(){
        String str = "2017-11-21 14:41:06:612";
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");     
        LocalDate date = LocalDate.parse(str, fmt);
        LocalDateTime time = LocalDateTime.parse(str, fmt);
        System.out.println("date:"+date);
        System.out.println("time:"+time);
    }

控制檯輸出結果

date:2017-11-21
time:2017-11-21T14:41:06.612

DateTimeFormatter詳解

DateTimeFormatter我們更多的是直接使用pattern來做轉換,
其實這個類本身已經提供了一些預定義好的實例供我們使用。
下面把兩者的具體釋義和示例都貼出來供大家參考。

預定義

Predefined Formatters                       Formatter Description                                               Example 
----------------------                      ----------------------                                              ------------ 
ofLocalizedDate(dateStyle)                  Formatter with date style from the locale                           '2011-12-03' 
ofLocalizedTime(timeStyle)                  Formatter with time style from the locale                           '10:15:30' 
ofLocalizedDateTime(dateTimeStyle)          Formatter with a style for date and time from the locale            '3 Jun 2008 11:05:30' 
ofLocalizedDateTime(dateStyle,timeStyle)    Formatter with date and time styles from the locale                 '3 Jun 2008 11:05' 
BASIC_ISO_DATE                              Basic ISO date                                                      '20111203' 
ISO_LOCAL_DATE                              ISO Local Date                                                      '2011-12-03' 
ISO_OFFSET_DATE                             ISO Date with offset                                                '2011-12-03+01:00' 
ISO_DATE                                    ISO Date with or without offset                                     '2011-12-03+01:00'; '2011-12-03' 
ISO_LOCAL_TIME                              Time without offset                                                 '10:15:30' 
ISO_OFFSET_TIME                             Time with offset                                                    '10:15:30+01:00' 
ISO_TIME                                    Time with or without offset                                         '10:15:30+01:00'; '10:15:30' 
ISO_LOCAL_DATE_TIME                         ISO Local Date and Time                                             '2011-12-03T10:15:30' 
ISO_OFFSET_DATE_TIME                        Date Time with Offset                                               '2011-12-03T10:15:30+01:00' 
ISO_ZONED_DATE_TIME                         Zoned Date Time                                                     '2011-12-03T10:15:30+01:00[Europe/Paris]' 
ISO_DATE_TIME                               Date and time with ZoneId                                           '2011-12-03T10:15:30+01:00[Europe/Paris]' 
ISO_ORDINAL_DATE                            Year and day of year                                                '2012-337' 
ISO_WEEK_DATE                               Year and Week                                                       '2012-W48-6' 
ISO_INSTANT                                 Date and Time of an Instant                                         '2011-12-03T10:15:30Z'  
RFC_1123_DATE_TIME                          RFC 1123 / RFC 822                                                  'Tue, 3 Jun 2008 11:05:30 GMT' 

Pattern

All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined: 

  Symbol  Meaning                     Presentation      Examples
  ------  -------                     ------------      -------
   G       era                         text              AD; Anno Domini; A
   u       year                        year              2004; 04
   y       year-of-era                 year              2004; 04
   D       day-of-year                 number            189
   M/L     month-of-year               number/text       7; 07; Jul; July; J
   d       day-of-month                number            10

   Q/q     quarter-of-year             number/text       3; 03; Q3; 3rd quarter
   Y       week-based-year             year              1996; 96
   w       week-of-week-based-year     number            27
   W       week-of-month               number            4
   E       day-of-week                 text              Tue; Tuesday; T
   e/c     localized day-of-week       number/text       2; 02; Tue; Tuesday; T
   F       week-of-month               number            3

   a       am-pm-of-day                text              PM
   h       clock-hour-of-am-pm (1-12)  number            12
   K       hour-of-am-pm (0-11)        number            0
   k       clock-hour-of-am-pm (1-24)  number            0

   H       hour-of-day (0-23)          number            0
   m       minute-of-hour              number            30
   s       second-of-minute            number            55
   S       fraction-of-second          fraction          978
   A       milli-of-day                number            1234
   n       nano-of-second              number            987654321
   N       nano-of-day                 number            1234000000

   V       time-zone ID                zone-id           America/Los_Angeles; Z; -08:30
   z       time-zone name              zone-name         Pacific Standard Time; PST
   O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
   X       zone-offset 'Z' for zero    offset-X          Z; -08; -0830; -08:30; -083015; -08:30:15;
   x       zone-offset                 offset-x          +0000; -08; -0830; -08:30; -083015; -08:30:15;
   Z       zone-offset                 offset-Z          +0000; -0800; -08:00;

   p       pad next                    pad modifier      1

   '       escape for text             delimiter
   ''      single quote                literal           '
   [       optional section start
   ]       optional section end
   #       reserved for future use
   {       reserved for future use
   }       reserved for future use
 

前面LocalDateTime轉String的部分其實已經涉及到了一些DateTimeFormatter的不同使用方法,這裏就不再重複提供demo啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章