Вы можете иметь кучу регулярных выражений и циклически проходить, пока не найдете совпадение. Я думаю, что вы также можете иметь несколько DateFormats и циклически проходить через них, ловя исключения на тех, которые не удалось.
Первое исключает использование исключений для неисключительных случаев, второе, возможно, лучше с точки зрения разработки, поскольку вы используете инфраструктуру синтаксического анализа даты, для которой она была разработана. Но в целом, я не думаю, что какой-либо из подходов обязательно является «лучшим» или «худшим» сам по себе - скорее, это вопрос личных предпочтений / убеждений.