如何分析与jsr310 DateTimeFormatter不区分大小写字符串?如何分析与jsr310

2019-05-16 15:53发布

JSR-310有一个方便的类DateTimeFormatters它可以构建一个DateTimeFormatter 。 我特别喜欢pattern(String)方法-见的Javadoc

不过,我打了一个问题,因此这是区分大小写的 - 例如,

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

“01-JAN-2012”,而不是 “01-JAN-2012” 或 “01-JAN-2012” 相匹配。

一种方法是向下打破串并分析成分,或其他是使用正则表达式来替换区分大小写的字符串区分大小写的字符串。

但感觉像,就必须有一个更简单的方法...

Answer 1:

还有就是......根据用户指南 (离线,请参阅的JavaDoc代替),你应该使用DateTimeFormatterBuilder构建复杂DateTimeFormatter

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


Answer 2:

这种替代是initializating静态变量有用:

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


Answer 3:

只是一个额外的注意,订单事宜。

这是不区分大小写:

            DateTimeFormatter format = new DateTimeFormatterBuilder()
                .parseCaseInsensitive()
                .parseLenient()
                .appendPattern("HH:mm EEEE")
                .toFormatter(); 

这不是:

            DateTimeFormatter format = new DateTimeFormatterBuilder()
                .appendPattern("HH:mm EEEE")
                .parseCaseInsensitive()
                .parseLenient()
                .toFormatter(); 


文章来源: How to parse case-insensitive strings with jsr310 DateTimeFormatter?
标签: java jsr310