如何使用jsr310 DateTimeFormatter解析不区分大小写的字符串?
jsr-310有一个方便的类DateTimeFormatters
,它允许你构造一个DateTimeFormatter
。 我特别喜欢pattern(String)
方法 – 请参阅javadoc
但是,我遇到了一个问题,即这是区分大小写的 – 例如
DateTimeFormatters.pattern("dd-MMM-yyyy");
与“01-Jan-2012”匹配,但不与“01-JAN-2012”或“01-jan-2012”匹配。
一种方法是断开字符串并解析组件,或者另一种方法是使用Regex用区分大小写的字符串替换不区分大小写的字符串。
但感觉应该有一个更简单的方法……
并且有…根据用户指南 (离线,请参阅JavaDoc ),您应该使用DateTimeFormatterBuilder
来构建复杂的DateTimeFormatter
例如
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); builder.parseCaseInsensitive(); builder.appendPattern("dd-MMM-yyyy"); DateTimeFormatter dateFormat = builder.toFormatter();
此替代方法可用于初始化静态变量:
DateTimeFormatter myFormatter = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("dd-MMM-yyyy") .toFormatter(Locale.ENGLISH);
只是额外注意,订单很重要。
这不区分大小写:
DateTimeFormatter format = new DateTimeFormatterBuilder() .parseCaseInsensitive() .parseLenient() .appendPattern("HH:mm EEEE") .toFormatter();
这不是:
DateTimeFormatter format = new DateTimeFormatterBuilder() .appendPattern("HH:mm EEEE") .parseCaseInsensitive() .parseLenient() .toFormatter();