Déterminer si une chaîne est une date valide avant l'analyse

J'ai cette situation où je lis à propos de 130K enregistrements contenant les dates stockées comme des champs de type Chaîne. Certains dossiers contiennent des blancs (null), certains contiennent des chaînes de caractères comme ceci: 'dd-MMM-yy' et certains contiennent cette "jj/MM/aaaa".

J'ai écrit une méthode comme ceci:

public Date parsedate(String date){

   if(date !== null){
      try{
        1. create a SimpleDateFormat object using 'dd-MMM-yy' as the pattern
        2. parse the date
        3. return the parsed date
      }catch(ParseException e){
          try{
              1. create a SimpleDateFormat object using 'dd/MM/yyy' as the pattern
              2. parse the date
              3. return parsed date
           }catch(ParseException e){
              return null
           }
      }
   }else{
      return null
   }

} 

De sorte que vous peut-être déjà repéré le problème. Je suis en utilisant le try .. catch dans le cadre de ma logique. Il serait mieux que je peux déterminer la main avant que la Chaîne contient en fait un parseable date dans un format puis de tenter de l'analyser.

Donc, est-il une API ou une bibliothèque qui peut vous aider avec ceci? Je n'ai pas l'esprit de l'écriture de plusieurs Analyser classes pour gérer les différents formats et ensuite, la création d'une usine pour sélectionner le correct6, mais, comment puis-je déterminer lequel?

Grâce.

source d'informationauteur Morgul Master