IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Gerer des dates


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut Gerer des dates
    bonjour, j'ai un petit soucis concernant la gestion de date.

    En entrée j'ai une Date de Debut et une Date de Fin

    Je voudrais en sortie connaitre Le Nb de semaine et avoir les semaines

    Exemple:
    Date de Debut :01/04/08 Date de Fin : 16/04/08

    Avoir en sortie Nb Semaines = 3

    Semaine 1: Date de Debut : 01/04/08 Date de Fin: 04/04/08
    Semaine 2: Date de Debut : 07/04/08 Date de Fin: 11/04/08
    Semaine 3: Date de Debut : 14/04/08 Date de Fin: 16/04/08

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Fais une recherche sur google : joda time. Un vrai bonheur !

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    ah je connais pas, je regarde ça merci

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    je vois pas comment je pourrais l'utiliser pour regler mon soucis

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, ce code permet d'avoir la différence en secondes, tu doit pouvoir trouver le nombre de secondes qu'il y a dans une semaine, je te laisse faire le calcul.

    long delai = (date2.getTime() - date1.getTime()) / 1000;

    Sinon la classe GregorianCalendar est pas mal non plus pour manipuler les dates.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    Pour connaitre la date de debut et fin de ma semaine par rapport a une date donnée j'ai cette classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    package org.c3.unedicbase.commun;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
     
     public class CalendrierSemaine 
     {
    	 static int DIMANCHE=7;
    	 static int LUNDI=1;
    	 static int MARDI=2;
    	 static int MERCREDI=3;
    	 static int JEUDI=4;
    	 static int VENDREDI=5;
    	 static int SAMEDI=6;
    	 private String calJour;
    	 private String calMois;
    	 private String calAnnee;
    	 private String calDate;
    	 private GregorianCalendar calTemp;
     
     
    	 public CalendrierSemaine(Date date)
    	 {
    		 int numSemaine =0;
    		 int annee = 0;
    		 calTemp = new GregorianCalendar();
    		 calTemp.setTime(date);
    		 calTemp.setFirstDayOfWeek(Calendar.MONDAY);
    		 annee = date.getYear();
    		 calTemp.set(Calendar.YEAR,annee);
    		 numSemaine = numSemaine(date);
    		 if ((numSemaine>0)&&(numSemaine<=53))
    		 {
    			 calTemp.set(Calendar.WEEK_OF_YEAR,numSemaine);
    		 }
    		 else
    		 { 
    			 System.out.println("Erreur de numéro de semaine");
    		 }
    		 calAnnee=Integer.toString(annee);
    	 }
     
    	 public String debutSemaine()
    	 {
    		 calTemp.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
    		 return this.resultat();
    	 }
     
    	 public String finSemaine()
    	 {
    		 calTemp.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
    		 return this.resultat();
    	 }
     
    	 public String finSemaineTravail()
    	 {
    		 calTemp.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
    		 return this.resultat();
    	 }
     
    	 public String jourSemaine(int numJourSem)
    	 {
    		 calTemp.set(Calendar.DAY_OF_WEEK,numJourSem);
    		 return this.resultat();
    	 }
     
    	 private String resultat()
    	 {
    		 calJour=Integer.toString(calTemp.get(Calendar.DAY_OF_MONTH));
    		 calJour=this.correctionFormat(calJour);
    		 /* Janvier=0, Février=1 ainsi de suite donc il faut ajouter plus pour corriger*/
    		 calMois=Integer.toString(calTemp.get(Calendar.MONTH)+1);
    		 calMois=this.correctionFormat(calMois);
    		 calDate=""+calJour+"/"+calMois+"/"+calAnnee;
    		 return calDate;
    	 }
     
    	 private String correctionFormat(String nombre)
    	 {
    		 String sortie="";
    		 int num=Integer.parseInt(nombre);
    		 if (num<10)
    		 {
    			 sortie="0"+nombre;
    		 }
    		 else
    		 {
    			 sortie=nombre;
    		 }
    		 return sortie;
    	 }
     
    	 public int numSemaine(Date date)
    	 {
    	   GregorianCalendar calendar = new GregorianCalendar() ;
    	   calendar.setTime(date);
    	   int numSemaine = calendar.get(Calendar.WEEK_OF_YEAR);
    	   return numSemaine;	   
    	 }
     }
    J'instancie ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    calendrierSemaine = new CalendrierSemaine(dateDebut);
    System.out.println(dateDebut.toLocaleString());
    System.out.println(calendrierSemaine.finSemaineTravail());
    Le pb que j'ai est celui-ci

    en dateDebut j'ai : 01/04/08

    En sortie je devrais avoir : 01/04/08 et 04/04/08

    mais j'ai : 01/04/08 et 06/04/08

  7. #7
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Toute une partie de ton code ne sert à rien, par exemple dans le constructeur de ta classe CalendrierSemaine, ce code a le même effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public CalendrierSemaine(Date date)
    {
        calTemp = new GregorianCalendar();
        calTemp.setTime(date);
        calTemp.setFirstDayOfWeek(Calendar.MONDAY);
        calAnnee=Integer.toString(calTemp.get(Calendar.YEAR));
    }
    Le setTime(date) suffit pour mettre à jour tous les autres champs du Calendar.

    Déja ça sera plus clair.

    Ensuite, je te conseille de créer un 2è Calendar dans ta classe qui sera la fin de semaine de travaille (voir un 3è pour la fin de semaine), ça évitera de manipuler le même tout du long et de changer la date à chaque accès.

    Pour chercher le vendredi suivant fait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public String finSemaineTravail()
            {
                int jourActuel = calTemp.get(Calendar.DAY_OF_WEEK);
                if(jourActuel != Calendar.FRIDAY) {
                    // on n'est pas vendredi
                    if(jourActuel > Calendar.FRIDAY) {
                        // on est samedi
                        calTemp.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
                    }
                    else {
                        calTemp.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY - jourActuel);
                    }
                }
                return this.resultat();
            }

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 99
    Par défaut
    Je te remercie d'avoir pris le tps dessus, sa fonctionne en suivant tes conseils, encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo