Как порядок опциональных шаблонов в DateTimeFormatter
влияет на операцию синтаксического анализа?Важность заказа при использовании нескольких необязательных шаблонов
Я запускал эту программу и задавался вопросом, почему последняя строка генерирует исключение, но не первые три.
public static void main(String[] args) {
String p1 = "[EEEE][E] dd-MM-yyyy";
String p2 = "[E][EEEE] dd-MM-yyyy";
String date1 = "Thu 07-01-2016";
String date2 = "Thursday 07-01-2016";
parse(date1, p1); //OK
parse(date1, p2); //OK
parse(date2, p1); //OK
parse(date2, p2); //Exception
}
private static void parse(String date, String pattern) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern, Locale.ENGLISH);
System.out.println(fmt.parse(date));
}
Исключение на последней строке:
java.time.format.DateTimeParseException: Текст 'четверг 07-01-2016' не может быть разобрано по индексу 3
Мне было бы приятно, если бы 'java.time' предлагал' DateTimeFormatter' с резервными шаблонами (например, jodatime). –
@SotiriosDelimanolis Там, где есть вопрос о добавлении поддержки для «OR» в разборе: [JDK-8132536] (https://bugs.openjdk.java.net/browse/JDK-8132536) – Tunaki
@ Сайт отслеживания ошибок Tunaki Java ооо медленно. Надеемся, что запрос будет принят. –