Gestion de date

Résolu

bonjour, 

je vient d'écrire une petite séquence de code la ou l'utilisateur entre un nombre de jour,mois et années qui devra être additionner a une   date sélectionner préalablement par le billet  de JDateChooser,

le voici

String jjt;
       String mmt;
       String aat;
       int jj=0;
       int mm=0;
       int aa=0;
        
        if(dc.getDate()==null){
           System.out.println("selectionner une date de début ");
            }else{
            
        
            jjt=tjj.getText();
            mmt=tmm.getText();
            aat=taa.getText();
          try {
         
                  jj = Integer.parseInt(jjt);
                  mm = Integer.parseInt(mmt);
                  aa = Integer.parseInt(aat);
              
                  } catch (NumberFormatException ex){
         
            
            Period p =Period.of( aa, mm, jj);
            Date date = dc.getDate();
     LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
     String formattedDate = df.format(localDate);
     
     
     
            dfl=localDate.plus(p);
            
            System.out.println(dfl);
        }
      }
          le problème c'est que il ajoute les jours mais pas les mois et les années.

est ce que vous pouvez d'aidé .


Windows / Chrome 108.0.0.0

2 réponses

  1. Modérateur

    Bonjour,

    Tu peux faire :

    dfl = localDate
            .plus(jj, ChronoUnit.DAYS)
            .plus(mm, ChronoUnit.MONTHS)
            .plus(aa, ChronoUnit.YEARS);

    1
    1. bonjour ,

      je vous remercie énormément, 

      0
  2. Question:
    Si je suis le 31 janvier et que j'ajoute 1 mois.
    Est-ce que je me retrouve le 31 février ... ou si la fonction me ramène en mars?

    Si je suis le 29 février d'une année bisextile et que j'ajoute une année, il se passe quoi?

    Je ne code pas en Java, mais la solution m'intrigue. En d'autres langages, on corrige manuellement.

    D'ailleurs, est-ce mieux d'ajouter dans l'ordre jour, mois, année, ou bien année, mois, jour?

    0
    1. Modérateur

      Bonjour,

      Java intègre un calendrier (grégorien), ce n'est pas juste des chiffres sur lesquels on fait des calculs.

      Par exemple aujourd'hui on est le 13 janvier 2023, Java va savoir qu'on est un vendredi.

      Remarque : si on considère les heures, minutes et secondes, Java va aller plus loin pour gérer les fuseaux horaires et changements d'heure, mais pas toutes les secondes intercalaires (c'est un choix).

      Plus d'information dans la documentation : https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Instant.html

      0
    2. bonjour,

      si le langage ne détecte pas le mois  il faut tous programmer vue que ce dernier n'a pas une valeur fixe (30, 31,28,29).Consternant l'année bissextile elle est repérable par le billet de l’opération( année modulo 4) si c'est égale a zéro et bien le mois de février sera 29 jours. 

      0