轉換示例
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啦。