如何使用jsr310 DateTimeFormatter解析不区分大小写的字符串?

2022-09-02 09:05:27

jsr-310 有一个方便的类,它允许您构造一个 .我特别喜欢这个方法 - 见javadocDateTimeFormattersDateTimeFormatterpattern(String)

但是,我遇到了一个问题,即这是区分大小写的 - 例如

DateTimeFormatters.pattern("dd-MMM-yyyy");

与“01-Jan-2012”匹配,但不与“01-JAN-2012”或“01-jan-2012”匹配。

一种方法是分解字符串并解析组件,或者另一种方法是使用正则表达式将不区分大小写的字符串替换为区分大小写的字符串。

但感觉应该有一种更简单的方法......


答案 1

还有...根据用户指南(离线,请参阅JavaDoc),您应该使用来构建一个复杂的DateTimeFormatterBuilderDateTimeFormatter

例如:

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
builder.parseCaseInsensitive();
builder.appendPattern("dd-MMM-yyyy");
DateTimeFormatter dateFormat = builder.toFormatter();

答案 2

此替代方法对于初始化静态变量很有用:

DateTimeFormatter myFormatter = new DateTimeFormatterBuilder()
                               .parseCaseInsensitive()
                               .appendPattern("dd-MMM-yyyy")
                               .toFormatter(Locale.ENGLISH);

推荐