[Java] Savoir si une date est valide

Savoir si une date est valide [Java] - Java - Programmation

Marsh Posté le 21-09-2007 à 11:34:55    

Voici le code suivant :
 

Code :
  1. SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd" );
  2.  try {
  3.   df.parse(20080230);
  4. }
  5. catch(ParseException ex){...}


 
Le format est bon, mais la date n'existe pas ! Comment savoir si cette date est valide ? [:petrus75].
 
Merci.


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 21-09-2007 à 11:34:55   

Reply

Marsh Posté le 21-09-2007 à 11:51:05    

setLenient ?

Reply

Marsh Posté le 21-09-2007 à 11:52:33    

d'un autre côté, je me dis qu'il faut associer une Date à un Calendar pour la valider, donc autant prendre une instance de GregorianCalendar et faire un setTime ?


Message édité par Taz le 21-09-2007 à 11:53:11
Reply

Marsh Posté le 21-09-2007 à 13:10:29    

C'est bon j'ai trouvé ! Faut utiliser des java.sql.Date en fait :
 
1) Créer un java.sql.Date à partir de la string saisie
2) Faire un toString() sur le java.sql.Date  
3) comparer le toString() avec la string saisie. Si egales OK sinon date invalide.
 
Tout simple en fait ;).


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 21-09-2007 à 13:18:46    

Giz a écrit :

C'est bon j'ai trouvé ! Faut utiliser des java.sql.Date en fait :
 
1) Créer un java.sql.Date à partir de la string saisie
2) Faire un toString() sur le java.sql.Date  
3) comparer le toString() avec la string saisie. Si egales OK sinon date invalide.
 
Tout simple en fait ;).


Oui car si tu saisies 20080230 ça devient 20080301 automatiquement non ?

Reply

Marsh Posté le 21-09-2007 à 13:48:04    

Oui :jap:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 23-09-2007 à 05:24:10    

Bonjour,
 
Même si cela fonctionne, il ne semble pas très "naturel" de passer par des dates SQL pour résoudre ce problème purement Java.
 
En suivant l'idée de Taz...
 

Code :
  1. // appeler ce fichier Test.java
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. public class Test {
  5.     public static void main(String[] args) {
  6.         String s = "20070229"; // 29 février 2007 !
  7.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd" );
  8.         dateFormat.setLenient(false);
  9.         java.util.Date date = null;
  10.         try {
  11.             date = dateFormat.parse(s);
  12.         } catch (ParseException ex) {
  13.             // la chaîne ne correspond pas à une date valide
  14.             ex.printStackTrace();
  15.         }
  16.         // tout va bien, on imprime :
  17.         System.out.println(date);
  18.     }
  19. }


 
Nicolas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed