SimpleDateFormat parse(string str) ne lance pas d'exception lors de la str = 2011/12/12aaaaaaaaa?
Voici un exemple:
public MyDate() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/d");
sdf.setLenient(false);
String t1 = "2011/12/12aaa";
System.out.println(sdf.parse(t1));
}
2011/12/12aaa n'est pas une date valide de la chaîne. Cependant, la fonction affiche de "Lun Déc 12 00:00:00 PST 2011" et ParseException n'est pas levée.
Quelqu'un peut me dire comment laisser SimpleDateFormat traiter "2011/12/12aaa" comme une date non valide chaîne et de lever une exception?
OriginalL'auteur Terminal User | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
La JavaDoc sur
parse(...)
les états suivants:Il semble que vous ne pouvez pas faire
SimpleDateFormat
lancer une exception, mais vous pouvez effectuer les opérations suivantes:Fondamentalement, vous vérifiez si l'analyse consommé la totalité de la chaîne et si vous avez une entrée non valide.
OriginalL'auteur Thomas
Vérifier si la date est valide
La méthode suivante retourne si la date est valide, sinon il retourne false.
Avoir un regard sur la classe suivante qui peut vérifier si la date est valide ou pas
** Exemple D'Échantillon**
OriginalL'auteur Sunil Kumar Sahoo
Après avoir analysé l'ensemble de la chaîne de modèle
SimpleDateFormat
s'arrête évaluer les données, il a été donné à analyser.OriginalL'auteur DerMike
Java 8 LocalDate peuvent être utilisés:
Si l'argument n'est
"2011/12/12aaaaaaaaa"
, la sortie estfalse
;Si l'argument n'est
"2011/12/12"
, la sortie esttrue
OriginalL'auteur David
Prendre un coup d'oeil sur la documentation de la méthode qui dit:
ParseException if the beginning of the specified string cannot be parsed
.Méthode de code source avec javadoc:
OriginalL'auteur amra
Vous pouvez utiliser le
ParsePosition
de la classe ou de l'sdf.setLenient(false)
fonctionDocs:
http://docs.oracle.com/javase/7/docs/api/java/text/ParsePosition.html
http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setLenient(booléen)
Lors de la liaison de la documentation Javadoc, s'il vous plaît essayer de lier la version actuelle (qui est de 7, pas 1.4.2).
mm je l'ai essayé moi-même avec un exemple, mais setLeniet() ne semble pas fonctionner et ParsePosition ne fonctionne que quand il est en fait une exception levée. Vous pouvez vérifier si les deux Chaînes ont la même longueur après parseing sans Exception, puis lancer une exception manuel. Pas entièrement ce que vous demandez, mais...
OriginalL'auteur Michel