Самый быстрый способ узнать, является ли строка допустимой датой

Я поддерживаю общую библиотеку на работе, которая выполняет много проверок заданной строки, чтобы узнать, является ли она действительной датой. У API Java, библиотеки commons-lang и JodaTime есть методы, которые могут анализировать строку и превращать ее в дату, чтобы вы знали, является ли она действительной датой или нет, но я надеялся, что найдется способ выполнить проверку без фактического создания объекта даты (или DateTime, как в случае с библиотекой JodaTime). Например, вот простой пример кода:

public boolean isValidDate(String dateString) {
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    try {
        df.parse(dateString);
        return true;
    } catch (ParseException e) {
        return false;
    }
}

Это просто кажется мне расточительным, мы выбрасываем полученный объект. По моим оценкам, около 5% нашего времени в этой общей библиотеке тратится на проверку дат. Я надеюсь, что мне не хватает очевидного API. Любые предложения будут великолепны!

UPDATE

Предположим, что мы всегда можем использовать один и тот же формат даты (вероятно, yyyyMMdd). Я тоже думал об использовании регулярных выражений, но тогда ему нужно было бы знать количество дней в каждом месяце, високосных годах и т. Д.

Results

Разобрал дату 10 миллионов раз

Using Java's SimpleDateFormat: ~32 seconds 
Using commons-lang DateUtils.parseDate: ~32 seconds
Using JodaTime's DateTimeFormatter: ~3.5 seconds 
Using the pure code/math solution by Slanec: ~0.8 seconds 
Using precomputed results by Slanec and dfb (minus filling cache): ~0.2 seconds

Были очень креативные ответы, я ценю это! Полагаю, теперь мне просто нужно решить, насколько мне нужна гибкость того, как должен выглядеть код. Я хочу сказать, что ответ dfb верен, потому что это был самый быстрый из моих первоначальных вопросов. Спасибо!

Ответы на вопрос(8)

Ваш ответ на вопрос