Моя программа анализирует входную строку в LocalDate
объект. Большую часть времени строка выглядит как 30.03.2014
, но иногда она выглядит как 3/30/2014
. В зависимости от этого мне нужно использовать другой шаблон для вызова DateTimeFormatter.ofPattern(String pattern)
. По сути, мне нужно проверить, соответствует ли строка шаблону dd.MM.yyyy
или M/dd/yyyy
, прежде чем выполнять синтаксический анализ.
Подход с регулярным выражением будет выглядеть примерно так:
LocalDate date;
if (dateString.matches("^\\d?\\d/\\d{2}/\\d{4}$")) {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("M/dd/yyyy"));
} else {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
}
Это работает, но было бы неплохо использовать строку шаблона даты при сопоставлении строки.
Существуют ли какие-либо стандартные способы сделать это с помощью нового API времени Java 8, не прибегая к сопоставлению регулярных выражений? Я просмотрел документы для DateTimeFormatter
но я ничего не нашел.
replace("//", ".")
? - person Robert Niestroj   schedule 06.05.2014SimpleDateFormat
не может напрямую анализироватьLocalDate
, а толькоjava.util.Date
, что сильно отличается. - person Meno Hochschild   schedule 06.05.2014