Я пишу некоторый простой код, который пытается определить, является ли конкретная строка на самом деле датой Java, и, если да, определить ее формат (шаблон).
Очевидно, что из-за того, что существует много возможных форматов даты, установление того, какой из них применим для строки, требует последовательного сопоставления с шаблоном, что действительно требует много времени и ресурсов процессора, учитывая, что входная строка может иметь и другие значения.
Итак, то, что я закончил, для строковой переменной с именем input
, похоже на
String datePattern;
if (isLikeDate(input))
{
datePattern = matchAnyOfThePredefinedDatePatterns(input);
}
, где метод isLike...
отклоняет очевидные строки без даты, а метод match...
обрабатывает около 40-50 предопределенных шаблонов, пытаясь создать допустимый объект SimpleDateFormat. Конструктор выдает исключение, если строка input
не является допустимой датой для образца, проверяемого каждый раз.
Обработка исключений значительно замедляет процесс, но, похоже, избежать этого невозможно. Пакеты Apache Commons Date демонстрируют аналогичную производительность.
Есть ли более быстрый способ реализации сопоставления с датой?