Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
510 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Valider une date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Valider une date

n°854949
Mara's dad
Yes I can !
Posté le 21-09-2004 à 15:25:25  profilanswer
 

Java commence à me courrir sur le haricot !
 
Bon, soit je suis neuneu (pas impossible) soit faut faire une putain de gymnastique pour valider une date à partir d'entrées comme Année, Mois, Jour.
 
Précision, java 1.3...
 
Y'a bien la soluce de construire une chaîne genre dd/MM/yyyy avec les entrées et de parser, mais :
- parse est deprecated :ange:
- Date est vachement limité en terme de limites mini maxi, re :ange:
 
 
Bref on nous dis dans la doc qu'il faut utiliser DateFormat ou Calendar.
 
Ni l'un ni l'autre ne sont très clair quand à ce qui se passe si une date n'est pas valide.
 
Ma solution actuelle est la suivante :
 
Construire un GregorianCalendar avec nYear, nMonth-1  :sarcastic: et nDay et ensuite de vérifier que get( GregorianCalendar.YEAR ) == nYear et idem pour nMonth-1 et nDay :sweat:
 
TROP NAZE !
 
Pourquoi faire simple quand on peut faire la Java :o


Message édité par Mara's dad le 21-09-2004 à 15:26:38

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
mood
Publicité
Posté le 21-09-2004 à 15:25:25  profilanswer
 

n°854951
lorill
Posté le 21-09-2004 à 15:28:20  profilanswer
 
n°854960
benou
Posté le 21-09-2004 à 15:35:04  profilanswer
 


Code :
  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. public class ValideDate {
  5. public static void main(String[] args) {
  6.  SimpleDateFormat df = new SimpleDateFormat("dd/MM/YYYY" );
  7.  int year = 2004;
  8.  int month = 9;
  9.  int day = 33;
  10.  boolean ok;
  11.  try {
  12.   Date d = df.parse(day + "/" + month + "/" + year);
  13.   ok = true;
  14.  } catch (ParseException e) {
  15.   ok = false;
  16.  }
  17.  System.err.println("date ok ? " + ok);
  18. }
  19. }


---------------
ma vie, mon oeuvre - HomePlayer
n°854967
benou
Posté le 21-09-2004 à 15:45:09  profilanswer
 

c'est bon fred ?


---------------
ma vie, mon oeuvre - HomePlayer
n°854979
Mara's dad
Yes I can !
Posté le 21-09-2004 à 15:56:43  profilanswer
 

Non !
 

Code :
  1. Date d;
  2. SimpleDateFormat sdf = new SimpleDateFormat( "dd/MM/yyy" );
  3. try
  4. {
  5. Date d = sdf.parse( "30/02/2004" );
  6. }
  7. catch( ParseException e )
  8. {
  9. e.printStackTrace(  );
  10. }


 
Résultat : d = 01/03/2004 !
 
Alors qu'avec 33/02/2004 j'ai une ParseException :pt1cable:
Idem avec 30/09/0504 (La limite dont je parlais plus haut...)
 
C'est language de bourrrrrrrrrrrrrrrrrins ou faut tout faire sois-même c'est tout !
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°854987
Mara's dad
Yes I can !
Posté le 21-09-2004 à 16:00:15  profilanswer
 

Conclusion :
 

public static boolean checkDate( int year, int month, int day )
{
    GregorianCalendar gc = new GregorianCalendar( year, month - 1, day );
    return( gc.get( GregorianCalendar.YEAR ) == year && gc.get( GregorianCalendar.MONTH ) == ( month - 1 ) && gc.get( GregorianCalendar.DAY_OF_MONTH ) == day );
}


 
Admirez le "month - 1" au passage :D


Message édité par Mara's dad le 21-09-2004 à 16:01:19

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°855048
sircam
I Like Trains
Posté le 21-09-2004 à 17:18:42  profilanswer
 

Mara's dad a écrit :

Non !
 

Code :
  1. Date d;
  2. SimpleDateFormat sdf = new SimpleDateFormat( "dd/MM/yyy" );
  3. try
  4. {
  5. Date d = sdf.parse( "30/02/2004" );
  6. }
  7. catch( ParseException e )
  8. {
  9. e.printStackTrace(  );
  10. }


 
Résultat : d = 01/03/2004 !
 
Alors qu'avec 33/02/2004 j'ai une ParseException :pt1cable:
Idem avec 30/09/0504 (La limite dont je parlais plus haut...)
 
C'est language de bourrrrrrrrrrrrrrrrrins ou faut tout faire sois-même c'est tout !


Code :
  1. sdf.setLenient(false);


Message édité par sircam le 21-09-2004 à 17:19:04

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°855053
benou
Posté le 21-09-2004 à 17:24:05  profilanswer
 

suffit de fixer le lenient à false :  
 

Code :
  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. public class ValideDate {
  5. public static void main(String[] args) {
  6.  SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy" );
  7.  df.setLenient(false);
  8.  try {
  9.   Date d = df.parse("30/02/2004" );
  10.   System.out.println("date : " + df.format(d));
  11.  } catch (ParseException e) {
  12.   System.err.println("error : " + e.getMessage());
  13.  }
  14. }
  15. }


 
edit : [:benou_grilled]


Message édité par benou le 21-09-2004 à 17:25:34

---------------
ma vie, mon oeuvre - HomePlayer
n°855054
lorill
Posté le 21-09-2004 à 17:25:20  profilanswer
 

benou a écrit :

suffit de fixer le lenient à true  :  


dit il en le mettant a false

n°855056
benou
Posté le 21-09-2004 à 17:26:05  profilanswer
 

lorill a écrit :

dit il en le mettant a false


corriged :o


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 21-09-2004 à 17:26:05  profilanswer
 

n°855065
lorill
Posté le 21-09-2004 à 17:30:01  profilanswer
 

trop tard  :ange:

n°855069
benou
Posté le 21-09-2004 à 17:30:53  profilanswer
 

lorill a écrit :

trop tard  :ange:


m'fous :o


---------------
ma vie, mon oeuvre - HomePlayer
n°855080
d4rK 3Mpr0​R
fr33 Kevin
Posté le 21-09-2004 à 17:37:05  profilanswer
 

il a le choix dans la date ?

n°855150
the real m​oins moins
Posté le 21-09-2004 à 18:32:16  profilanswer
 

ha merde, lenient [:bien]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°855189
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-09-2004 à 19:39:33  profilanswer
 


Vu le nombre d'emmerdes que ce truc crée, j'me d'mande encore pourquoi il est à true par défaut :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°855350
Mara's dad
Yes I can !
Posté le 21-09-2004 à 23:23:28  profilanswer
 

Ok merçi à tous, j'avais pas vu setLenient() :jap:
 
J'avais juste vu isLenient() dont je n'avais pas bien compris la signification...
 
 :fou: Je suis un neuneu !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°855353
darklord
You're welcome
Posté le 21-09-2004 à 23:36:34  profilanswer
 

Mara's dad a écrit :


 :fou: Je suis un neuneu !


 
Si tu n'arrives pas à faire ce genre de choses en java, c'est une bonne raison :o
 
( [:joce] )


---------------
Just because you feel good does not make you right
n°855354
Mara's dad
Yes I can !
Posté le 21-09-2004 à 23:53:59  profilanswer
 

Bah, j'ai que 6 mois d'expérience en java.
Vu la taille de l'api, je ne suis pas étonné de n'en avoir qu'égratigné la surface.
Y'a l'age aussi :sweat: Mes neurones ne sont plus aussi alertes qu'il y a 25 ans :sarcastic:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°855359
d4rK 3Mpr0​R
fr33 Kevin
Posté le 22-09-2004 à 00:12:06  profilanswer
 

hey papy, 'faut pas laisser trainer votre déambulateur dans le milieu du chemin ! merci. :o

n°855464
Mara's dad
Yes I can !
Posté le 22-09-2004 à 10:18:08  profilanswer
 

Désolé :o


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Valider une date

 

Sujets relatifs
[Réglé] Soustraction de date[UNIX] suppression de fichiers suivant leur date
Valider un XML en PHP4conversion date millisecondes -> yyyy-mm-dd hh:ii:ss
Probleme de date ...Valider une adresse email
[resolu] probleme de requete avec DAY(date) et MONTH(date)[as]récupérer la date de la veille?
Retrouver l'age à partir d'une date?[Java] Valider le format d'une date ? Bug avec SimpleDateFormat ?
Plus de sujets relatifs à : Valider une date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR