[英]java.lang.IllegalArgumentException: Too many pattern letters: m
[英]DateTimeFormatter - java.lang.IllegalArgumentException: Too many pattern letters: a
我的java
代碼中有以下行,我正在嘗試格式化日期字符串
ZonedDateTime zonedDateTime= ZonedDateTime.ofInstant(instant, tz);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm aa");
return zonedDateTime.format(formatter);
在第 2 行,我收到此錯誤:
java.lang.IllegalArgumentException: Too many pattern letters: a
at java.time.format.DateTimeFormatterBuilder.parseField(DateTimeFormatterBuilder.java:1774)
我如何為DateTimeFormatter.ofPattern
創建格式字符串,例如:
2023-04-21 7.00pm
a
如錯誤所述,您使用了過多a
字符代碼。
將aa
更改a
.
您可能一直在想用兩個字母表示 AM 和 PM。 但實際上,可能會出現其他文本。
a
生成的文本取決於本地化過程中使用的人類語言和文化規范。 您通過Locale
指定語言和規范。 如果省略,則隱式應用 JVM 當前的默認語言環境。
為了好玩,讓我們嘗試查看所有語言環境中所有可能的輸出。
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "h:mm a" ) ;
LocalTime lt = LocalTime.of( 19 , 0 ) ;
for( Locale locale : Locale.getAvailableLocales() )
{
String s = lt.format( f.withLocale( locale ) ) ;
System.out.println( locale + " : " + s ) ;
}
您可以看到許多不同的文本片段是可能的,許多超過兩個字符。 即使那些使用PM
或pm
的人在包含句號時也可能有兩個以上的字符: pm
。
nn : 7:00 ettermiddag
ar_JO : 7:00 م
bg : 7:00 сл.об.
kea : 7:00 pm
nds : 7:00 PM
zu : 7:00 PM
am_ET : 7:00 ከሰዓት
fr_DZ : 7:00 PM
ti_ET : 7:00 ድሕር ሰዓት
bo_CN : 7:00 ཕྱི་དྲོ་
hsb : 7:00 popołdnju
qu_EC : 7:00 p.m.
ta_SG : 7:00 பிற்பகல்
lv : 7:00 pēcpusdienā
en_NU : 7:00 PM
…
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.