2012-04-10 3 views
1

Je dois analyser une chaîne à l'année dans le format "yyyy". L'extrait de code que j'utilise estParse une chaîne à la date de la forme "yyyy"

try{ 
     String strDate = "200323"; 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); 
     Date dateStr = formatter.parse(strDate); 

     System.out.println("The year is " + dateStr); 


    } 
    catch(Exception e){ 
     System.out.println("Date parse exception"); 
    } 

Le problème est de savoir si j'utilise une chaîne avec 4 chiffres, dire « 2003 », son analysé à l'année et la sortie est comme prévu « L'année est Mer 1 janvier 00: 00:00 GMT 2003 ". Mais quand nous donnons une chaîne invalide de plus de 4 chiffres comme dans l'extrait ci-dessus, disons "200323", elle ne lance pas d'exception d'analyse, mais accepte la valeur de chaîne et la sortie est montrée comme "L'année est lun jan 01 00:00:00 GMT 200323 ". Quelqu'un peut-il suggérer une solution pour résoudre ce problème ou au moins faire une exception parse throw? J'ai même essayé formatter.setLenient(false) avant d'analyser, mais il n'a montré aucun effet. Toute aide est appréciée. Merci d'avance.

+0

Pourquoi ne pas simplement passer les 4 premiers caractères de la chaîne? Ou si la longueur est supérieure à 4 java.text.ParseException() –

+1

'200323' est une année valide. Vous pouvez tronquer la chaîne si elle comporte plus de 4 chiffres. –

+0

Je pense que le problème est de faire en sorte que le 'formatter' figure sur l'année. Vous devez résoudre le problème de savoir ce qu'il faut passer pour une «année valide», pour votre cas. Quels sont les cas qui pourraient casser ceci (chaînes d'année non valides)? Ensuite, vous pouvez les nettoyer et les passer pour être formaté –

Répondre

1

Vous voulez dire que plage de dates jusqu'à 9999 que vous avez tort ami

plage de dates java est

Début:Sat Jan 01 00:00:00 PST 1

Fin:Wed Apr 17 21:34:08 PST 292269054

pour que vous puissiez pas gérer ça.

Questions connexes