Date format jj/mm/aaaa

Fermé
nouna002
Messages postés
1
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
1 mai 2009
- 1 mai 2009 à 23:03
 :) - 27 nov. 2015 à 21:41
Bonsoir,
j ss debutant d la programmation (java) je vx savoir s'il existe une method en java pour obliger l utilisateur a saisir une date sous cett format jj/mm/aaaa
merci d'avance

4 réponses

TheTROLL
Messages postés
4163
Date d'inscription
samedi 9 février 2008
Statut
Contributeur
Dernière intervention
19 décembre 2012
659
1 mai 2009 à 23:05
regarde a cette adresse:
http://www.javafr.com/
1
Utilisateur anonyme
2 mai 2009 à 21:14
Salut,

>>>> fiddy:
Bien entendu que SimpleDateFormat retournera une date de format dd/jj/aaaa, et contrôlera même que jj mm aaaa sont numériques, et forcera les éventuels zéros à guauche , mais si l'utilisateur ne respecte pas ce format malgré System.out.print("date (dd/mm/yyyy): ");
Exemple j'entre 1/5/9, je récupère 01/05/0009 sans obligation de saisir de nouveau. Et ceci sans parler de contrôle de validité de la date puisque celà doit être traité plus loin, ce que je vais faire maintenant sans attendre la réponse de nouna002:

>>>> nouna002:

ne pas oublier:
import java.util.GregorianCalendar;
et pour les messages d'erreur:
import java.awt.Toolkit;
mport javax.swing.JOptionPane;
----
----

le code toujours en simulation de saisie:


// il faudra que tu me dises ce que tu utilises pour l'entrée clavier
// Pour l'instant je suppose que ce sera dans un String saisie

// Mois j'utilise les boite de dialogue

// nous aurons besoin de:

//static JOptionPane erreur; // ajout mais au niveau class (globale)
String info = ""; // ajout
boolean cntValidDate = false; // ajout

String saisie = "";
int longueurSaisie = 0;
int deuxOuQuat = 2; // pour lg jj et mm
boolean encore = true;
String jjS = "";
String mmS = "";
String aaaaS = "";

// supposons qu'on saisira pour la date 01/05/2009:

// d'abord jj:
System.out.println("\nEntrer le jour sur 2 caracteres\n");
saisie = "29"; // simulation // "1"
jjS = saisie;
String entrer = "jj";
String libLg = Integer.toString(deuxOuQuat);

while(encore)
{
encore = false; // sera force a true si err de lg
longueurSaisie = saisie.length();
if (longueurSaisie != deuxOuQuat)
{
encore = true;
//System.out.println("\nsaisie = " + "\"" + saisie + "\"" + ":\n"
info = "\nsaisie = " + "\"" + saisie + "\"" + ":\n"
+ "-la longueur de " + entrer + " est incorrecte\n"
+ "-on devrait avoir " + libLg + "!\n"
+ "ENTRER " + entrer + " DE NOUVEAU.";
Toolkit.getDefaultToolkit().beep();
erreur.showMessageDialog(null, info + "\n","ERREUR",JOptionPane.ERROR_MESSAGE);

if (entrer.equals("jj"))
{
saisie = "28"; // simulation "01"
jjS = saisie;
}
else
if (entrer.equals("mm"))
{
saisie = "02"; // simulation "05"
mmS = saisie;
}
else
{
saisie = "2009";
aaaaS = saisie;
}
}
else // si la longueur est bonne
{
if (entrer.equals("jj"))
{
System.out.println("\njj = " + "\"" + jjS + "\"\n");
// ensuite mm:
System.out.println("Entrer le mois sur 2 caracteres\n");
saisie = "2"; // simulation "5"
mmS = saisie;
entrer = "mm";
libLg = Integer.toString(deuxOuQuat);
encore = true;
}
else
if (entrer.equals("mm"))
{
System.out.println("\nmm = " + "\"" + mmS + "\"\n");
// enfin aaaa:
System.out.println("Entrer l'annee sur 4 caracteres\n");
saisie = "09"; // simulation
aaaaS = saisie;
entrer = "aaaa";
deuxOuQuat = 4;
libLg = Integer.toString(deuxOuQuat);
encore = true;
}
else
if (entrer.equals("aaaa"))
{
System.out.println("\naaaa = " + "\"" + aaaaS + "\"\n");
encore = false;
cntValidDate = true;
}
}

// ici on a incorpore le controle de validite de la date
// et remarquer qu'on a ajoute boolean cntValidDate = falsee;
// au début apres boolean encore = true;
// il faut aussi import java.util.GregorianCalendar;

if (cntValidDate)
{
int p1 = Integer.parseInt(aaaaS);
int p2 = Integer.parseInt(mmS);
p2--; // car nous devons fournir le n° de mois -1
int p3 = Integer.parseInt(jjS);

try
{
GregorianCalendar gc = new GregorianCalendar(p1, p2, p3);
gc.setLenient(false); // sans cette ligne, pas d'exception possible
// (true par defaut)
gc.getTime(); // c'est cette ligne qui provoquera le contrôle.

}
catch (Exception e) {
e.printStackTrace();
encore = true;
info = "\nLa date obtenue " + jjS + "/" + mmS + "/" + aaaaS
+ "est invalide:\nEntrer de nouveau le jour sur 2 caracteres\n";
//System.out.println("\nLa date obtenue " + jjS + "/" + mmS + "/" + aaaaS
// + " est invalide, entrer de nouveau le jour sur 2 caracteres\n");

Toolkit.getDefaultToolkit().beep();
erreur.showMessageDialog(null, info + "\n","ERREUR",JOptionPane.ERROR_MESSAGE);

//javax.swing.JOptionPane.showMessageDialog(null,info);
saisie = "1"; // simulation
deuxOuQuat = 2;
jjS = saisie;
entrer = "jj";
libLg = Integer.toString(deuxOuQuat);
cntValidDate = false;
}
}
}
String dateEntree = jjS + "/" + mmS + "/" + aaaaS;
javax.swing.JOptionPane.showMessageDialog(null,"Résultat :" +dateEntree);

Cordialement,

Dan
1
Utilisateur anonyme
2 mai 2009 à 11:20
Salut,

J'ai un code:


// LE MIEUX SERAIT DE DEMANDER LA DATE EN 3 FOIS:
// jj et on ajoute / apres avoir vérifié que la longueur est 2
// mm et on ajoute / " " " "
// aaaa et on vérifie que la longueur est 4

// il faudra que tu me dises ce que tu utilises pour l'entrée clavier
// Pour l'instant je suppose que ce sera dans un String saisie

// nous aurons besoin de:

String saisie = "";
int longueurSaisie = 0;
int deuxOuQuat = 2; // pour lg jj et mm
boolean encore = true;
String jjS = "";
String mmS = "";
String aaaaS = "";

// supposons qu'on saisira pour la date 01/05/2009:

// d'abord jj:
System.out.println("\nEntrer le jour sur 2 caracteres\n");
saisie = "1"; // simulation
jjS = saisie;
String entrer = "jj";
String libLg = Integer.toString(deuxOuQuat);

while(encore)
{
encore = false; // sera force a true si err de lg
longueurSaisie = saisie.length();
if (longueurSaisie != deuxOuQuat)
{
encore = true;
System.out.println("\nsaisie = " + "\"" + saisie + "\"" + ":\n"
+ "-la longueur de " + entrer + " est incorrecte\n"
+ "-on devrait avoir " + libLg + "!\n"
+ "ENTRER " + entrer + " DE NOUVEAU.");
if (entrer.equals("jj"))
{
saisie = "01"; // simulation
jjS = saisie;
}
else
if (entrer.equals("mm"))
{
saisie = "05"; // simulation
mmS = saisie;
}
else
{
saisie = "2009";
aaaaS = saisie;
}
}
else // si la longueur est bonne
{
if (entrer.equals("jj"))
{
System.out.println("\njj = " + "\"" + jjS + "\"\n");
// ensuite mm:
System.out.println("Entrer le mois sur 2 caracteres\n");
saisie = "5"; // simulation
mmS = saisie;
entrer = "mm";
libLg = Integer.toString(deuxOuQuat);
encore = true;
}
else
if (entrer.equals("mm"))
{
System.out.println("\nmm = " + "\"" + mmS + "\"\n");
// enfin aaaa:
System.out.println("Entrer l'annee sur 4 caracteres\n");
saisie = "09"; // simulation
aaaaS = saisie;
entrer = "aaaa";
deuxOuQuat = 4;
libLg = Integer.toString(deuxOuQuat);
encore = true;
}
else
if (entrer.equals("aaaa"))
{
System.out.println("\naaaa = " + "\"" + aaaaS + "\"\n");
encore = false;
}
}
}
String dateEntree = jjS + "/" + mmS + "/" + aaaaS;
System.out.println("\nLa date entree est: " + dateEntree + "\n\n");

// Il reste a controler si la date est valide (jj en fonction de mm
// et des annees bisextiles, mm dans les limites 01 a 12...)
// on peut le faire en utilisant Calendar ou GregorianCalendar
// si tu es interresse, je t'indiquerai comment faire.

Cordialement,

Dan
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 804
2 mai 2009 à 12:55
Salut,
Et Java inventa la méthode parse de DateFormat ^^.
0
c'est quoi le janvier?
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 804
2 mai 2009 à 13:00
Salut,
Voici un exemple :
import java.util.Scanner;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class TestDate {
    static DateFormat format=new SimpleDateFormat("dd/mm/yyyy");

    public static void main(String args[]) {
        Scanner scan=new Scanner(System.in);
        Date date=null;
        while (date==null) {
            System.out.print("date (dd/mm/yyyy): ");
            String entree=scan.next();

            try {
                date=format.parse(entree);
            } catch (ParseException e) {
                System.out.println("erreur saisie date");
            }
        }
        System.out.println("date: " + format.format(date));
    }
}

0
Attention ce n'est pas "dd/mm/yyyy" mais "dd/MM/yyyy" avec un "M" majuscule pour le mois, sinon ce sont les minutes !!!
0
je ne comprend rien!
0