jav*_*900 2 java date-format java-time zoneddatetime datetimeformatter
我的代码中有以下行java,我试图格式化日期字符串
ZonedDateTime zonedDateTime= ZonedDateTime.ofInstant(instant, tz);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm aa");
return zonedDateTime.format(formatter);
Run Code Online (Sandbox Code Playgroud)
在第 2 行,我收到此错误:
java.lang.IllegalArgumentException: Too many pattern letters: a
at java.time.format.DateTimeFormatterBuilder.parseField(DateTimeFormatterBuilder.java:1774)
Run Code Online (Sandbox Code Playgroud)
我如何创建一个格式字符串,DateTimeFormatter.ofPattern例如:
2023-04-21 7.00pm
Run Code Online (Sandbox Code Playgroud)
a正如错误所述,您使用了太多a字符代码。
改成。aaa
您可能一直在考虑用两个字母来表示 AM 和 PM。但实际上,可能会出现其他文本。
\n生成的文本a取决于本地化过程中使用的人类语言和文化规范。您可以通过 指定语言和规范Locale。如果省略,则隐式应用 JVM\xe2\x80\x99s 当前的默认区域设置。
为了好玩,让\xe2\x80\x99s 尝试查看所有语言环境中的所有可能输出。
\nDateTimeFormatter f = DateTimeFormatter.ofPattern ( "h:mm a" ) ;\nLocalTime lt = LocalTime.of( 19 , 0 ) ;\nfor( Locale locale : Locale.getAvailableLocales() ) \n{\n String s = lt.format( f.withLocale( locale ) ) ;\n System.out.println( locale + " : " + s ) ;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n您可以看到许多不同的文本片段都是可能的,许多文本都超过两个字符。即使那些使用PM或 的人pm在包含句号字符时也可能有两个以上的字符:p.m.。
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "h:mm a" ) ;\nLocalTime lt = LocalTime.of( 19 , 0 ) ;\nfor( Locale locale : Locale.getAvailableLocales() ) \n{\n String s = lt.format( f.withLocale( locale ) ) ;\n System.out.println( locale + " : " + s ) ;\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |