Bonjour,
Supposons que j'ai une date date1 comme la suivante :
Pour régler l'exception sur le mois, existe-il une bibliothèque prête à utiliser (.jar) ou je dois la gérer moi-même ?Code:String date1 = "2013-20-01";
Merci beaucoup.
Version imprimable
Bonjour,
Supposons que j'ai une date date1 comme la suivante :
Pour régler l'exception sur le mois, existe-il une bibliothèque prête à utiliser (.jar) ou je dois la gérer moi-même ?Code:String date1 = "2013-20-01";
Merci beaucoup.
De quoi parles-tu ?
Je vous explique, alors j'ai mis comme mois : 20. Ce qui n'existe pas. En effet, ça m'affiche :Donc l'exception n'a pas été traitée.Code:2014 08 01
Là je dois la gérer donc. Je me demande si je dois la gérer manuellement ou existe-il une bibliothèque qui gère ça ?
La classe Calendar le fait il me semble... (lenient)
Le parsing de SimpleDateFormat aussi si mes souvenirs sont bons
Question #1... pourquoi avoir une date en string ? d'ou vient elle ?
Question #2... quel est le code qui transforme "2013-20-01" en "2014-08-01" ?
Dans tes objets Date, tu dois spécifier une locale... ou utiliser une Locale par défaut prenant ça en compte car "2013-20-01" est une date tout à fait valable pouvant représenter le 20 janvier 2013.
A mon sens, la seule chose que tu puisses faire avec ça, c'est une vérification manuelle du second nombre, celui-ci ne devant pas être plus grand que 12.
Ensuite un SimpleDateFormat avec un masque yyyy-MM-dd... mais c'est vrai qu'il ne m'est jamais venu à l'idée de tester avec des dates incorrectes.
HS : essaye de donner toutes les infos de ton problème, c'est usant de tirer les vers du nez de quelqu'un alors qu'on essaye d'aider.
Merci beaucoup pour votre réponse.
Voilà en gros ce que j'ai fait :
ça donne dans la Console :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 String mois; String date1 = "2013-20-01"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date11 = sdf.parse(date1); String mois = date1.substring(5, 7); System.out.println("Le mois est : " +mois); int i = Integer.parseInt(mois); if ((i>0) && (i<13)){ System.out.println("Le mois "+i+ " est validé"); } else System.out.println("Le mois "+i+ " n'existe pas"); } catch (ParseException e) { e.printStackTrace(); } }
ça marche "manuellement". Là je me demande s'il y a une bibliothèque qui gère cette exception afin que je l'utilise ^^'Citation:
Le mois est : 20
Le mois 20 n'existe pas
Une exception de type ParseException sera levée si la date n'est pas conforme lorsque tu essaie de la parser.
Elle existe tout en bas de ton code mais tu ne l'utilises pas...
Salut,
Il faut passer le DateFormat en mode non-lenient (comme l'a indiqué nicroman un peu plus haut) :
:arrow: Cela génèrera une exception si la date est incorrect !Code:sdf.setLenient(false);
Alors que par défaut en mode "lenient" le DateFormat va tenter de "corriger" la date (ex 31-sept devient le 01-oct, etc.).
Attention également à bien lire toute la chaine.
En effet par défaut parse(String) s'arrête dès qu'il a trouver ce qu'il cherchait.
Ainsi dans ton cas la chaine "2013-02-01-23" sera converti en 2013-02-01 et le "-23" supplémentaire sera ignoré.
Si tu veux une exception dans ce cas là, il faut utiliser parse(String,ParsePosition) et vérifié que l'index du ParsePosition après le parse() correspondent bien à la taille de la chaine...
a++
ça m'a énormément aidé !
Merci beaucoup :ccool: