#java #date #parsing #date-format #simpledateformat
#java #Дата #синтаксический анализ #дата-формат #simpledateformat
Вопрос:
Приведенный ниже фрагмент кода должен вызывать исключение синтаксического анализа, согласно моему пониманию, но это не так. Просмотрел документацию, но не смог разобраться.
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
dateFormat.setLenient(false);
dateFormat.parse("20160821_$folder$");
Комментарии:
1. При использовании Java 8 вы можете использовать DateTimeFormatter, который является строгим и будет генерировать исключение в вашем примере.
Ответ №1:
Это то, что говорит javadoc:
Анализирует текст с начала заданной строки для получения даты. Метод может использовать не весь текст данной строки.
Пока он находит совпадение, он прекращает дальнейшее сканирование, что, по-видимому, имеет место здесь.
Если вы хотите строгую проверку, вы можете добавить RegEx
сопоставление поверх этого, чтобы предотвратить анализ таких строк.
Комментарии:
1. Это объясняет это. Интересно, почему они не используют флаг снисходительности. Но, поскольку это задокументировано, это не ошибка.