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

时间:2012-05-29 10:59:41

标签: java jsr310

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

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

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

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

一种方法是断开字符串并解析组件,或者另一种方法是使用Regex用区分大小写的字符串替换不区分大小写的字符串。

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

3 个答案:

答案 0 :(得分:19)

根据User Guide(离线,请参见JavaDoc),您应该使用DateTimeFormatterBuilder来构建复杂的DateTimeFormatter

e.g。

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

答案 1 :(得分:7)

此替代方法可用于初始化静态变量:

if

答案 2 :(得分:2)

只是额外注意,订单很重要。

这不区分大小写:

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

这不是:

void main(int argc, char** argv, Arguments& arguments)