19

jsr-310 有一个方便的类DateTimeFormatters,它允许你构造一个DateTimeFormatter. 我特别喜欢这种pattern(String)方法 - 请参阅javadoc

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

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

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

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

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

4

3 回答 3

28

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

例如

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
builder.parseCaseInsensitive();
builder.appendPattern("dd-MMM-yyyy");
DateTimeFormatter dateFormat = builder.toFormatter();
于 2012-05-29T10:59:41.213 回答
10

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

DateTimeFormatter myFormatter = new DateTimeFormatterBuilder()
                               .parseCaseInsensitive()
                               .appendPattern("dd-MMM-yyyy")
                               .toFormatter(Locale.ENGLISH);
于 2016-02-03T14:58:07.523 回答
4

只是一个额外的说明,顺序很重要。

这是不区分大小写的:

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

这不是:

            DateTimeFormatter format = new DateTimeFormatterBuilder()
                .appendPattern("HH:mm EEEE")
                .parseCaseInsensitive()
                .parseLenient()
                .toFormatter(); 
于 2018-04-25T11:58:59.277 回答