Java: jour d'une date donnée

Bonsoir
merçi d'avance

j'ai crée une classe date avec le langage java
je veux savoir qu'il est le jour d'un date donnée par exemlpe
3/3/2009
est mardi/mars/2009
vous pouvez m'aider svp comment je peux la faire

8 réponses

  1. Salut,

    Pour la date du jour tu peux faire:

    SimpleDateFormat sdf = new SimpleDateFormat("EEEE d MMMM yyyy");
    Date date = new Date();
    String laDateFormatee = sdf.format(date);
    System.out.println("La date du jour : " + laDateFormatee);

    Mais pour une date telle que 3/3/2009
    il est fortement recommandé de NE PAS FAIRE

    SimpleDateFormat sdf = new SimpleDateFormat("EEEE d MMMM yyyy");
    Date date = new Date("3/3/2009");
    String laDateFormatee = sdf.format(date);
    System.out.println("La date du jour : " + laDateFormatee);

    car Date date = new Date("3/3/2009"); est "deprecated"
    Même si le résultat obtenu est correct, mais tôt ou tard ce sera refusé.

    Il faut voir du coté de Calendar/GregorianCalendar

    Cordialement,

    Dan
    1
    1. SVP danimo vous pouvez m'aidez à résoudre mon probléme
      j'ai un programme java qui traite un fichier qui contient des informations en langue arabe. je vais traiter ces informations et les écrire dans un autre fichier. ca marche bien si j'utilse des données francais mais le probléme c'est avec la langue arabe
      j'ai un pb d'unicode? je sais pas pourquoi? qui peut m'aider SVP?
      j'ai pas trouver de solution?
      0
    2. Merçi Danimo pour votre réponse
      j'ai testé la méthide que vous avez écrit mais elle me donne seulement le nom du jour de la date d'aujourd'hui mais moi je veux savoir le nom d'un jour d'une date donnée par l'utilisateur
      comment je peux le faire svp.
      merçi d'avance
      0
  2. Salut,

    "autre question svp
    je veux calculer l'age de qulqu'un à partir d'un date donnée "

    GregorianCalendar et Calendar te seront également utiles pour faire celà.

    Cordialement,

    Dan
    1
    1. bonsoir
      tu crees un private SimpleDateFormat avec le format de la date voulu comme ca
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE d MMMM yyyy");
      puis une metthode qui retourne ce format

      public String fromDateToString(Date aDate) {
      if (aDate == null) {
      return null;
      } else {
      return simpleDateFormat.format(aDate);

      }
      }
      et dans le main tu demande tu crees un objet de ta classe et tu demande a l'utilisateur de faire entré la date voulu

      et voila la classe complete

      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Calendar;
      import java.util.Date;
      import java.util.HashMap;
      import java.util.*;
      public class Debutante {

      private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE d MMMM yyyy");

      public String fromDateToString(Date aDate) {
      if (aDate == null) {
      return null;
      } else {
      return simpleDateFormat.format(aDate);

      }
      }

      public static void main(String[] args) {
      Debutante d=new Debutante();
      Scanner in=new Scanner(System.in);
      System.out.println("entrez la date ");
      Date date=new Date(in.next());
      System.out.println(d.fromDateToString(date));

      }

      }
      bonne chance
      0
      1. Salut,

        Oui, mais comme signalé dans ma réponse:

        Date date=new Date(in.next()); // EST DEPRECATED

        Je vais donc donner un exemple avec Calendar / GregorianCalendar:

        import java.io.*;
        import java.util.GregorianCalendar;
        import java.util.Calendar;

        public class ex3bis
        {
        static int ex = 3;

        // Les 2 tables : tabjours[], tabmois[]
        static String[] tabjours = {"dimanche", "lundi", "mardi", "mercredi", "jeudi",
        "vendredi", "samedi"};

        static String[] tabmois = {"janvier", "février", "mars", "avril", "mai", "juin",
        "juillet", "août", "septembre", "octobre", "novembre", "décembre"};

        public static String ex3()
        {
        // Nous supposons que nous entrons p1, p2, p3 au clavier
        // p1 >> parametre annee, p2 parametre mois, p3 parametre jour
        int p1 = 2009;
        int p2 = 3;
        int p3 = 1;
        p2--; // p2 doit contenir le n° de mois moins 1, soit 0 a 11

        Calendar cal = new GregorianCalendar(p1, p2, p3);
        // obtention des composants de la date :
        int annee = cal.get(Calendar.YEAR);
        int num_mois = cal.get(Calendar.MONTH);
        int jour = cal.get(Calendar.DAY_OF_MONTH);
        int num_jour = cal.get(Calendar.DAY_OF_WEEK);

        String Sjour = Integer.toString(jour);
        if (Sjour.equals("1")) Sjour = "1er";

        String info2 = "CODE DE L'EXEMPLE ( ENTRER UNE DATE PARTICULIÈRE ) \n\n"

        + "Le résultat sera affiché dans une boite de dialogue sous la forme :\n"
        + "EXEMPLE " + ex + "\n\n"

        + tabjours[num_jour -1] + " " + Sjour + " " + tabmois[num_mois] + " " + annee + "\n\n";

        // un second exemple nous permet de savoir quel jour nou serons dans 2 ans
        // on aurait pu ajouter 2 a p1
        p3 = p3 +731; // 731 jours apres la 1ere date (2 ans)
        // nous fournissons les parametre de la nouvelle date
        cal = new GregorianCalendar(p1, p2, p3);
        // obtention des composants de la date :
        annee = cal.get(Calendar.YEAR);
        num_mois = cal.get(Calendar.MONTH);
        jour = cal.get(Calendar.DAY_OF_MONTH);
        num_jour = cal.get(Calendar.DAY_OF_WEEK);

        info2+= "Et après ajout de 2 ans (731 jours) à p3 (jour) :\n\n"

        + tabjours[num_jour -1] + " " + Sjour + " " + tabmois[num_mois] + " " + annee + "\n"

        + "\n\n ------------------------------------------------------\n";
        String info = info2;
        javax.swing.JOptionPane.showMessageDialog(null,info);

        return "";
        }

        public static void main (String[] args)
        {
        ex3();
        System.exit(0);
        }
        }

        Cordialement, Dan
        0
    2. Merçi pour votre réponse j'ai écrit la méthode que vous avez écrit mais quand je veux l'exécuter dans le main il m'indique que il ya un prblème dans la forme du date .
      qu'elle est la forme de la date que dois écrire
      exp 3/4/2008
      autre question svp
      je veux calculer l'age de qulqu'un à partir d'un date donnée
      comment je peux le faire
      merçi encore et desolée pour ce dérangement
      0
      1. Bonsoir
        tu ecris sous forma exp= "02/03/2009"
        0
        1. Salut,

          En fait ca dépend de la classe... Si Jour, Mois, Année sont les attributs de ton objet de la classe Date, alors il est facile de les recuperer ( grace aux accesseurs bien entendu ) puis il suffit d'apliquer l'algo... Il est de la forme ( en pseudo code pour avoir le jour, si tu veux la version java, tu me le demandes )

          entier j, m, a, s, JD, JS

          si m<3 alors m <-- m + 12
          a <-- a - 1
          fsi
          s <-- a \ 100
          JD <-- 1720996,5 - s + s \ 4 + [365,25*a] + [30,6001*(M+1)] + j
          JD <-- JD - [JD/7]*7
          JS <-- [JD] mod 7
          selon que
          JS = 0 faire Dat <-- "mardi";
          JS = 1 faire Dat <-- "mercredi";
          JS = 2 faire Dat <-- "jeudi";
          JS = 3 faire Dat <-- "vendredi";
          JS = 4 faire Dat <-- "samedi";
          JS = 5 faire Dat <-- "dimanche";
          JS = 6 faire Dat <-- "lundi";
          fselon
          écrire "Le ", j, "/", m, "/", a, "est un ", Dat

          Pour le mois, c'est plus simple je suppose
          0
          1. Merçi pour votre réponse
            vous pouvez me donner la version java svp

            voila la methode que j'ai fait pour avoir la date demandée

            public String jour2() throws ParseException, java.text.ParseException {
            String str = année+"/"+mois+"/"+jour;
            java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            java.util.Date dte = sdf.parse(str);
            sdf = new SimpleDateFormat("EEEE");
            return sdf.format(dte);
            elle me donne le resultat merçi encore
            pour calculer l'age de qulqu'un

            je dois savoir le mois el l'année à partir de numero de securité qui se compose de 13nb( pour le 1er num si egale 1 alors c'est masculin et si egale 2 est feminin et pourle num 2 et 3 c'est pour l'année de naiss et le num 4 et 5 pour le mois )
            et je savoir l'age à partir de numero de securité(num2 et 3)
            année de naiss-année de le systeme
            voila la classe que j'ai écrit
            import java.util.Calendar;
            import java.util.GregorianCalendar;

            public class personne2 {
            private String nom;
            private String societé;
            final String pasdesocieté="?";
            private String NumSecu;
            public personne2(String Nom){
            nom=Nom;
            }

            public personne2(String Nom,String Societé){
            nom=Nom;
            societé=Societé;

            }
            public personne2(String Nom,String Societé,String numsecu){
            nom=Nom;
            societé=Societé;
            NumSecu=numsecu;
            }
            public String validersocieté(String x){
            if(x!=pasdesocieté)
            return x;else return "?";
            }
            public void setNom(String nom) {
            this.nom = nom;
            }
            public String getNom() {
            return nom;
            }
            public void setSocieté(String societé) {
            this.societé = societé;
            }
            public String getSocieté() {
            return societé;
            }

            public boolean etreSalarie(){
            if (societé.equals(pasdesocieté)==false);
            return true;

            }
            public void quitterSocieté(){
            if(etreSalarie()==false)
            System.out.println("je quitte la societé "+societé);
            else
            System.out.println("impossiple de quitter la societé");
            }
            public void setNumSecu(String numSecu) {
            NumSecu = numSecu;
            }
            public String getNumSecu() {
            return NumSecu;
            }
            public String validernumsecu(){
            int s=Integer.parseInt(NumSecu.substring(2,5));

            if(NumSecu.length()==13 & (NumSecu.charAt(0)=='1'| NumSecu.charAt(0)=='2' ) & s<12)
            return NumSecu ;
            else return " Numsecurité incorrecte";
            }
            public boolean IsMasculin(){
            boolean s = false;

            if(NumSecu.charAt(0)=='1')
            s= true;
            else if(NumSecu.charAt(0)=='2')s=false;
            return s;
            }

            public int getAge(){
            int an=Integer.parseInt(NumSecu.substring(1, 3));
            an=an+1900;
            comment je peux savoir la date du systeme pour que je peux faire la soustraction de deux date
            0
          2. @sosoimport java.util.*;
            import java.text.DateFormat;
            import java.text.SimpleDateFormat;

            public class Dates
            {
            // * Choix de la langue francaise
            static Locale locale = Locale.getDefault();
            static Date actuelle = new Date();

            // * Definition du format utilise pour les dates
            static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

            // * Donne la date au format "aaaa-mm-jj"
            public static String date()
            {
            String dat = dateFormat.format(actuelle);
            return dat;
            }

            Je suis pas sur du fonctionnement de ce code. J'attends ton feed back
            0
          3. @sosoUne autre remarque, mais je suis toujours pas sur... ( j'ai pas JCreator sur ce PC )

            Je pense que rien que l'instantiation d'un objet de type Date, lui affecte directement la date actuelle.

            Tu me mets au courant si c'est le cas!
            0
          4. @farfouch00ca marche pas et voila une autre méthode je la trouve
            public void affichedate(){
            SimpleDateFormat sdf = new SimpleDateFormat("EEEE d MMMM yyyy");
            Date date = new Date();
            String laDateFormatee = sdf.format(date);
            System.out.println("La date d'aujourd'hui est : " + laDateFormatee); }
            elle me donne le résultat mais je n'arrive pas à comprendre ce ligne (String laDateFormatee = sdf.format(date);
            **vous pouvez me donner la version que vous avez dit**
            0
        2. Re,

          "elle me donne le résultat mais je n'arrive pas à comprendre ce ligne (String laDateFormatee = sdf.format(date); "

          Date date = new Date(); est bien la maniere d'obtenir la date du jour (date systeme)

          en faisant un print de date: System.out.println("date = " + date); tu te rends compte que ce n'est pas sous cette forme que tu veux ta date.

          Avec
          SimpleDateFormat sdf = new SimpleDateFormat("EEEE d MMMM yyyy"); tu vas donner un nouveau format a la date

          EEEE permet d'obtenir le nom du jour en entier, d le jour, MMMM le nom du mois en entier et yyyy l'annee su 4 caracteres.

          On obtient une autre présentation de la date, on a changé le "formatage"

          String laDateFormatee = sdf.format(date);
          J'aurais pu ecrire :
          String resultat = sdf.format(date);

          L'equivalent pour obtenir la date du jour avec GregorianCalendar est:

          GregorianCalendar cal = new GregorianCalendar(); // sans parametres
          // obtention des composants de la date :
          int annee = cal.get(Calendar.YEAR);
          int num_mois = cal.get(Calendar.MONTH); // num_mois prend les valeurs 0 a 11
          int jour = cal.get(Calendar.DAY_OF_MONTH);

          Cordialement,

          Dan
          0
          1. Bonjour Danimo
            désolée pour ce dérangament
            maintenant j'arrive à comprendre
            autre question svp
            comment je fais pour surcharger une méthode
            exp j'ai écrit une classe mere(personne ) et 3 classe qui héritent de la classe personne et à l'interieur des trois 3 il y a une méthode qui porte la meme signature comment je peux la surcharger dans la classe de base
            desolée encore
            0
        3. Salut Soso

          Lorsque tu surcharges une méthode, à son emploi, c'est toujours la méthode surchargée ( redéfinie dans la classe fille ) qui est utilisée. La seul façon d'appliquer la méthode définie dans la classe mère, c'est de l'appeler pour un objet de cette classe.

          Exemple : Classe mère : Personne ou t'as définis une méthode toString()
          Classe files : Employé, Étudiant ou t'as surchargée la méthode toString()

          Lorsque t'appliques à une instance de la sous classe Étudiant la méthode toString(), c'est celle redéfinie dans cette sous classe qui est appelée... Et le seul moyenne de faire appel à la 1ere, c'est de l'appliquer sur une instance de la classe Personne!
          0
          1. slt tout le monde
            par exemple on a une méthode calculesalaire() qui est commun entre 3 classes qui héritent de la classe personne
            mais j'ai écrit le code de cette méthode dans les 3 autres classe avec la meme signature et pas avec avec le meme code et pas dans la classe mere svp comment je peux surchager cette méthode dans la classe personne
            0