Gestion de date

Résolu
aigle22_2418 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
aigle22_2418 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -

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

A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 

Bonjour,

Tu peux faire :

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

1
aigle22_2418 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   1
 

bonjour ,

je vous remercie énormément, 

0
PierrotLeFou
 

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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 

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 18 Date d'inscription   Statut Membre Dernière intervention   1
 

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