LocalDate/LocalDateTime與String的互相轉換示例(附DateTimeFormatter詳解)

摘自:https://www.jianshu.com/p/b7e72e585a37

 

LocalDate/LocalDateTime與String的互相轉換示例(附DateTimeFormatter詳解)

三汪關注
0.3122017.11.21 15:11:58字數 342閱讀 13,092

本文閱讀時間5分鐘。本文由做者三汪首發於簡書。css


看到網上好像關於Java8提供的新時間包java.time的示例幾乎都是關於新類和Date,Calendar這些類的互相轉換。
很詫異沒有看到與String的互相轉換。
那就讓我來提供一個示例吧。html

轉換示例

LocalDate轉String

代碼java

@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); } 

控制檯輸出結果api

LocalDate轉String:2017-11-21 

LocalDateTime轉String

代碼ruby

@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); } 

控制檯輸出結果oracle

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

代碼spa

@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); } 

控制檯輸出結果.net

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

DateTimeFormatter詳解

DateTimeFormatter咱們更多的是直接使用pattern來作轉換,
其實這個類自己已經提供了一些預約義好的實例供咱們使用。
下面把二者的具體釋義和示例都貼出來供你們參考。code

預約義

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啦。orm

擴展閱讀


以上。但願個人文章對你能有所幫助。我不能保證文中全部說法的百分百正確,但我能保證它們都是個人理解和感悟以及拒絕複製黏貼。有什麼意見、看法或疑惑,歡迎留言討論。

相關文章
相關標籤/搜索