Как разобрать строки без учета регистра с помощью jsr310 DateTimeFormatter?
JSR-310 имеет удобный класс DateTimeFormatters
который позволяет вам построить DateTimeFormatter
, Мне особенно нравится pattern(String)
метод - см. Javadoc
Тем не менее, я столкнулся с проблемой, при которой это чувствительно к регистру, например
DateTimeFormatters.pattern("dd-MMM-yyyy");
соответствует "01-Jan-2012", но не "01-Jan-2012" или "01-Jan-2012".
Один из подходов состоит в том, чтобы разбить строку и проанализировать компоненты, или другой - использовать Regex для замены строк без учета регистра строк с учетом регистра.
Но такое чувство, что должен быть более легкий путь...
3 ответа
И есть... в соответствии с Руководством пользователя (в автономном режиме, см. Вместо 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();