Calendar

Résolu/Fermé
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013 - 13 juin 2013 à 00:09
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013 - 19 juin 2013 à 13:08
Bonjour,

j'ai reussi je pense a faire cette methode en int mais pas en String, comment faire ?

Une methode publique statique String donneJour(int jour, int mois, int année )
qui renvoie sous forme de String le jour de la semaine correspondant à la date
entrée.

public int donneJour(int jour, int mois, int annee) {
calendar.set(Calendar.YEAR, annee);
calendar.set(Calendar.MONTH, annee);
calendar.set(Calendar.DAY_OF_MONTH, jour);
return calendar.get(Calendar.DAY_OF_WEEK);
}

J'ai aussi un main de test mais il y a une erreur il ne trouve pas la methode pour calendar:

public static void main(String[] args) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.donneJour(1,1,1);
}

Merci !!
A voir également:

18 réponses

Hello,

Essaye ca avec des petites modifications a fair,ca te retourne ta date en String a la fin

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2001);
calendar.set(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(df.format(calendar.getTime()));
0
Bonjour et merci.

j'ai pu corriger

Calendar calendar = Calendar.getInstance();
public String donneJour(int jour, int mois, int annee) {
calendar.set(Calendar.YEAR, annee);
calendar.set(Calendar.MONTH, annee);
calendar.set(Calendar.DAY_OF_MONTH, jour);
return ""+calendar.get(Calendar.DAY_OF_WEEK);

mais uk me faut cette methode en static :s comment faire ?
0
Ah Desolé,j'ai mal interpreté ta question,j'ai cru que tu voulais retourner toute la date en String et non pas seulement le jour de la date,
Pour retourner le jour de ta date (lundi-mardi ...)
il te suffira de reajuster le code que je t'ai deja envoyé par ca ;

DateFormat df = new SimpleDateFormat("EEEEEE");
System.out.println(df.format(calendar.getTime()));
0
tres bien mais comment utiliser la methode que j'ai fite si elle est crrecte en string ? merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ta methode doit etre comme suit:
public String donneJour(int jour, int mois, int annee) {
Calendar calendar = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("EEEEEEEEE");
calendar.set(Calendar.YEAR, annee);
calendar.set(Calendar.MONTH, mois);
calendar.set(Calendar.DAY_OF_MONTH, jour);
return df.format(calendar.getTime());
}
0
Daccord ^^. Je voulais dire en STATIC merci pour vote aide Orichimaru.

Et petite question, je dois faire cela :

Une exception qui déclare la date entrée en paramètre comme invalide :
c'est-à-dire si mois > 12 ou si le jour est incompatible avec le mois et l'année

Comment tester si le jour est incompatible ?
0
J'ai fait un

if (mois<12 && calendar.isSet(Calendar.DAY_OF_MONTH))

dans la fonction, mais la date est "set" apres le if donc comment le test pourrait se faire :s
0
salut,

en fait la class calendar crée une date correcte a partir de tes données meme si les donnée en input sont incorrectes donc si par exemple tu veux creer une date a partir des données suivant Jour:30 mois:fevrier et année 2000 tu auras toujours 02-03-2000 au lieu de 30-02-2000 car la correction se fait automatiquement. donc ce que tu peux faire tout simplement c'est construire une chaine contenant l'ensemble des données en input avec le même format que le pattern defini au niveau de simpleFormat,et par la suite tu compare la date calendar et la date construite :)
0
Voici le classe, le probleme c'est qu'ien lancant le main avec une bonne date cela ne renvoie rien alors quon a un return. Que faire? et commen tester si a date est valide dans le if ? mercii

public class DonneJour {


public static String donneJour(int jour, int mois, int annee) throws DonneJourException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE");
calendar.set(Calendar.YEAR, annee);
calendar.set(Calendar.MONTH, mois);
calendar.set(Calendar.DAY_OF_MONTH, jour);
if (mois<12) {
return ""+dateFormat.format(calendar.getTime());
}
else {

throw new DonneJourException();
}
}



public static void main(String[] args) {

Calendar calendar = new GregorianCalendar();
DonneJour j= new DonneJour();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE");
try {
donneJour(1,11,2013);
}

catch (DonneJourException e) {
System.out.println(e.toString());
}
}
}
0
j'ai fait un && dateFormat.isLenient()

est ce bon ?
0
up, comment tester si une date existe ? ex 31sept2013
0
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013
15 juin 2013 à 11:20
up ! toujours pas résolu svp!
0
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013
15 juin 2013 à 23:10
up tjs pa resolu..
0
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013
16 juin 2013 à 18:40
UP Svp KX ou tksteph
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
16 juin 2013 à 19:28
Salut!
J'avoue être un peu perdu dans tout ce qui est écris plus haut au point ou je ne sais pas à quel question répondre?

Peux-tu soit recréer le sujet soit reposer ta question à partir d'ici?


0
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013
17 juin 2013 à 12:31
Merci tksteph ! Je cherche a tester si une date est valide, on me demander de tester si le jour est compatible avec la date (ex 31 fevrier 20xx) et si le mois est <12. Dans ce cas on donne le jour de la semaine correspondant a la date entrée. J'ai donc fait un if pour tester avec if( mois<13 && ...) je ne sais pas quoi mettre dans les ... ou autre part pour tester la validité du jour donc. Voici le programme :

public class DonneJour {


public static String donneJour(int jour, int mois, int annee) throws DonneJourException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE");
calendar.set(Calendar.YEAR, annee);
calendar.set(Calendar.MONTH, mois-1);
calendar.set(Calendar.DAY_OF_MONTH, jour);
if (mois<13) {
return ""+dateFormat.format(calendar.getTime());
}
else {

throw new DonneJourException();
}
}



public static void main(String[] args) {

Calendar calendar = new GregorianCalendar();
DonneJour j= new DonneJour();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE");

try {
donneJour(25,9,2013);
System.out.println(donneJour(25,9,2013));
}

catch (DonneJourException e) {
System.out.println(e.toString());
}
}
}

Merci encore une fois tksteph !
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
17 juin 2013 à 21:52
Salut, si j'ai bien compris il s'agit pour toi de vérifier si une date que tu prend en paramètres est valide, conformément au jour (<32) au mois(<13) et au mois, jour, année (février, mois à 30/31 jour, années bisextiles...)

Et bien Java te permet de le faire nativement via la classe SimpleDateFormat (Que tu utilises déja)

Donc en définissant bien un format de date approprié, tu n'as plus besoin de faire de vérifications de toi même

J'ai légèrement modifié ton programme, observe la difference entre les lignes



class DonneJour {

    public static String donneJour(int jour, int mois, int annee) throws DonneJourException {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE");
        calendar.set(Calendar.YEAR, annee);
        calendar.set(Calendar.MONTH, mois - 1);
        calendar.set(Calendar.DAY_OF_MONTH, jour);

        System.out.println();

        try {
            SimpleDateFormat dateFormatValidity = new SimpleDateFormat("yyyy/MM/dd");
            dateFormatValidity.setLenient(false);
            String str = annee + "/" + mois + "/" + jour;
            dateFormatValidity.parse(str);
        } catch (Exception ex) {
            throw new DonneJourException();
        }
        return "" + dateFormat.format(calendar.getTime());
    }

    public static void main(String[] args) {

        DonneJour j = new DonneJour();

        try {
            donneJour(29, 9, 2013);
            System.out.println(donneJour(25, 9, 2013));
        } catch (DonneJourException e) {
            System.out.println(e.toString());
        }
    }
}




Rque dateFormatValidity est utilisé juste pour vérifie la validité. en effet si la date entrée n'est pas valide, ton exception sera levée à ce niveau là et en conclusion ton programme ne te donnera le bon résultat que si la date en paramètes est bien valide.


J'espère que c'est bien de celà qu'il était question


Bon courage

0
hedii Messages postés 39 Date d'inscription samedi 7 janvier 2012 Statut Membre Dernière intervention 19 juin 2013
19 juin 2013 à 13:08
merci !
0