Gestion de date

Résolu/Fermé
aigle22_2418 Messages postés 19 Date d'inscription mardi 13 décembre 2022 Statut Membre Dernière intervention 3 mai 2023 - 11 janv. 2023 à 22:59
aigle22_2418 Messages postés 19 Date d'inscription mardi 13 décembre 2022 Statut Membre Dernière intervention 3 mai 2023 - 19 janv. 2023 à 11:23

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

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 janv. 2023 à 20:06

Bonjour,

Tu peux faire :

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

1
aigle22_2418 Messages postés 19 Date d'inscription mardi 13 décembre 2022 Statut Membre Dernière intervention 3 mai 2023 1
19 janv. 2023 à 10:38

bonjour ,

je vous remercie énormément, 

0

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
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié le 13 janv. 2023 à 07:48

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
aigle22_2418 Messages postés 19 Date d'inscription mardi 13 décembre 2022 Statut Membre Dernière intervention 3 mai 2023 1
19 janv. 2023 à 11:23

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