下面的列表顯示了我們可以用來創(chuàng)建自定義數(shù)據(jù)格式模式的格式符號。
G AD GGGG Anno Domini GGGGG A
u/uuu/uuuu 2014 uu 12 uuuuu 02014
y/yyy/yyyy 2014 yy 12 yyyyy 02014
D 150
M 5 MM 05 MMM Jul MMMM July
d 21 dd 01 ddd 001 ddd 029
Q 3 QQ 03 QQQ Q3 QQQQ 3rd quarter
Y 2014 YY 12 YYY/YYYY 2014
w 31
W 2
E 7 EE 07 EEE Sun EEEEE Sunday
F 1
a AM
h 2
K 3
k 7
H 7 HH 07
mm 21
ss 12
SSSSSSSSS 000006789
A 12014012
n 789
N 12014012001289
VV America/Chicago
z CDT
Z -0500 ZZ -0500 ZZZ -05:00 ZZZZ GMT-05:00
O GMT-5
X +09 XX +0930 XXX +09:30 XXX -05:00 XXXX +093045 XXXXX +08:30:45
xx -0500
mm 30 pppmm " 30"
"Hello" MMMM Hello July
"""Hello""" MMMM "Hello" July
import java.time.LocalDate; import java.time.Month; import java.time.format.DateTimeFormatter; import java.time.temporal.Temporal; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDate ld = LocalDate.of(2014, Month.JUNE, 30); format(ld, "M/d/yyyy"); format(ld, "MM/dd/yyyy"); format(ld, "MMM dd, yyyy"); format(ld, "MMMM dd, yyyy"); format(ld, "EEEE, MMMM dd, yyyy"); format(ld, ""Month" q "in" QQQ"); } public static void format(Temporal co, String pattern) { DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); String str = fmt.format(co); System.out.println(pattern + ": " + str); } }
上面的代碼生成以下結(jié)果。
我們可以使用DateTimeFormatter類的Ptern()方法創(chuàng)建一個具有指定格式模式和語言環(huán)境的DateTimeFormatter對象。
static DateTimeFormatter ofPattern(String pattern) static DateTimeFormatter ofPattern(String pattern, Locale locale)
以下代碼顯示如何創(chuàng)建兩個格式化程序,以便在默認(rèn)語言環(huán)境和德語語言環(huán)境中以“Month day,Year”格式設(shè)置日期格式。
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("MMMM dd, yyyy"); DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("MMMM dd, yyyy", Locale.GERMAN);
DateTimeFormatter
類withLocale()方法從同一模式返回指定區(qū)域設(shè)置的DateTimeFormatter對象。
DateTimeFormatter fmt2 = fmt1.withLocale(Locale.GERMAN);
DateTimeFormatter
類中的 getLocale()
方法返回當(dāng)前格式化程序的語言環(huán)境。
import java.time.LocalDate; import java.time.LocalTime; import java.time.Month; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.Temporal; import java.util.Locale; public class Main { public static void main(String[] args) { LocalTime lt = LocalTime.of(16, 30, 5, 78899); format(lt, "HH:mm:ss"); format(lt, "KK:mm:ss a"); format(lt, "[MM-dd-yyyy][" at" HH:mm:ss]"); ZoneId usCentral = ZoneId.of("America/Chicago"); ZonedDateTime zdt = ZonedDateTime.of(LocalDate.now(), lt, usCentral); format(zdt, "MM/dd/yyyy HH:mm:ssXXX"); format(zdt, "MM/dd/yyyy VV"); format(zdt, "[MM-dd-yyyy][" at" HH:mm:ss]"); } public static void format(Temporal co, String pattern) { DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern, Locale.US); String str = fmt.format(co); System.out.println(pattern + ": " + str); } }
上面的代碼生成以下結(jié)果。
定義自定義日期時間格式時我們可以使用符號 [
和]
以標(biāo)記可選部分。
只有當(dāng)信息可用于所有元素時,才會輸出包含在可選節(jié)中的模式。
以下代碼顯示如何使用可選格式。
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Month; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { String pattern = "MM/dd/yyyy[ "at" HH:mm:ss]"; DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); LocalDate ld = LocalDate.of(2014, Month.JUNE, 30); LocalTime lt = LocalTime.of(17, 30, 12); LocalDateTime ldt = LocalDateTime.of(ld, lt); String str1 = fmt.format(ld); System.out.println(str1); String str2 = fmt.format(ldt); System.out.println(str2); } }
上面的代碼生成以下結(jié)果。
我們可以從 DateTimeFormatterBuilder
創(chuàng)建自定義日期時間格式。
以下代碼構(gòu)建一個 DateTimeFormatter
對象以格式化日期格式,例如“YEAR中的新年度在WEEK_DAY”:
import java.time.LocalDate; import java.time.Month; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.format.TextStyle; import java.time.temporal.ChronoField; public class Main { public static void main(String[] args) { DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendLiteral("New Year in ") .appendValue(ChronoField.YEAR) .appendLiteral(" is on ") .appendText(ChronoField.DAY_OF_WEEK,TextStyle.FULL_STANDALONE) .toFormatter(); LocalDate ld = LocalDate.of(2014, Month.JANUARY, 1); String str = ld.format(formatter); System.out.println(str); } }
上面的代碼生成以下結(jié)果。
我們可以使用DateTimeFormatterBuilder中的模式創(chuàng)建相同的自定義格式化程序。
import java.time.LocalDate; import java.time.Month; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { LocalDate ld = LocalDate.of(2014,Month.JANUARY,1); String pattern = ""New Year in" yyyy "is on" EEEE"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); String str = ld.format(formatter); System.out.println(str); } }
上面的代碼生成以下結(jié)果。
更多建議: