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

Collection et Stream Java Discussion :

problème de dates


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Par défaut problème de dates
    Bonjour,

    j'ai deux dates (dateDebutOP,dateFinOp)

    et j'ai deux dates(dateDebutStat,dateFinStat)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dateDebutOp=getDebutPeriode()
     
    public Date getDebutPeriode() throws ParseException {
     
    		Calendar cal = Calendar.getInstance();
    		long dateDebut=dateFormat.parse(debutPeriodeOperationnelleField.getText()).getTime();
    		cal.setTimeInMillis(dateDebut);
     
    		return new Date(dateDebut);
    	}

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    dateFinOp=getFinPeriode()
     
    public Date getFinPeriode() throws ParseException {
     
    		Calendar cal = Calendar.getInstance();
    		long dateFin = dateFormat
    				.parse(finPeriodeOperationnelleField.getText()).getTime();
    		cal.setTimeInMillis(dateFin);
    		return new Date(dateFin);
     
    	}

    le but est que dateDebutStat récupère la valeur de dateDebutOp avec une année en moins et pareil pour dateFinStat.


    J'ai essayé pas mal de solutions en utilisant Calendar mais ça marchait pas trop.

    Pourriez vous m'indiquer quelques solutions,Merci d'avance.

    Cdt,

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Parmi tes essais, as-tu testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar cal = Calendar.getInstance();
    cal.setTime(dateDebutOp);
    cal.add(Calendar.YEAR, -1);
    dateDebutStat = cal.getTime();

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Par défaut
    Bonjour,
    merci pour votre réponse,j'ai effectué le changement comme ceci:
    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
     
     
    public Date getDebutPeriode() {
    		Calendar cal = Calendar.getInstance();
    		long dateDebut = 0;
    		try {
    			dateDebut = dateFormat
    					.parse(debutPeriodeStatistiqueField.getText()).getTime();
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		cal.setTimeInMillis(dateDebut);
    		System.out.println("dateDebut:" + dateDebut);
     
    		return new Date(dateDebut);
    	}
     
    	public Date getFinPeriode() {
    		Calendar cal = Calendar.getInstance();
    		long dateFin = 0;
    		try {
    			dateFin = dateFormat.parse(finPeriodeStatistiqueField.getText())
    					.getTime();
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		cal.setTimeInMillis(dateFin);
    		System.out.println("dateFin:" + dateFin);
    		return new Date(dateFin);
    	}
     
    	public Date getDebutPeriodeStatistique() {
    		Calendar c = Calendar.getInstance();
    		Date debutPeriodeStatistique = null;
    		c.setTime(getDebutPeriode());
    		c.add(Calendar.YEAR, -1);
    		debutPeriodeStatistique = c.getTime();
    		return debutPeriodeStatistique;
     
    	}
     
    	public Date getFinPeriodeStatistique() {
    		Calendar c = Calendar.getInstance();
    		Date finPeriodeStatistique = null;
    		c.setTime(getFinPeriode());
    		c.add(Calendar.YEAR, -1);
    		finPeriodeStatistique = c.getTime();
    		return finPeriodeStatistique;
    	}
    mais malheureusement,ça n'a pas donné le résultat obtenu:par ex

    pour getDebutPeriode()=01/01/08 ->getDebutPeriodeStatistique()=01/01/69

    et getFinPeriode()=25/06/08->getFinPeriodeStatistique()=01/01/69

    Merci d'avance

    Cdt,

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Le résultat "01/01/69" donne l'impression qu'une erreur se produit dans getXxxPeriode().

    De mon côté j'ai fait un test avec le code ci-dessous et je n'ai rencontré aucun problème.
    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
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
     
     
    public final class Test {
     
    	public static void main(String[] args) throws Exception {
     
    		Test test = new Test();
     
    		System.out.println(test.getDebutPeriode());
    		System.out.println(test.getDebutPeriodeStatistique());
     
    	}
     
     
    	SimpleDateFormat dateFormat = new SimpleDateFormat("dd MM yyyy");
     
    	public Date getDebutPeriodeStatistique() throws ParseException {
    		Calendar c = Calendar.getInstance();
    		c.setTime(getDebutPeriode());
    		c.add(Calendar.YEAR, -1);
    		return c.getTime();
    	}
     
     
    	public Date getDebutPeriode() throws ParseException {
    		return dateFormat.parse("24 06 2014");
    	}
    }

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Par défaut
    Bonjour,j'ai testé votre code ,il donne le résultat que je veux mais quand je l'applique au mien ça marche pas ,voici plus de précisions sur mon code:

    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
     
     
    if (debutPeriode != null) {
    			debutPeriodeOperationnelleField.setValue(debutPeriode.getTime());
    			debutPeriodeStatistiqueField.setValue(getDebutPeriodeStatistique());
    		} else {
    			debutPeriodeOperationnelleField.setValue(null);
    			debutPeriodeStatistiqueField.setValue(null);
    		}
    		if (finPeriode != null) {
    			finPeriodeOperationnelleField.setValue(finPeriode.getTime());
    			finPeriodeStatistiqueField.setValue(getFinPeriodeStatistique());
    		} else {
    			finPeriodeOperationnelleField.setValue(null);
    			finPeriodeStatistiqueField.setValue(null);
    		}
    en sachant que (debutPeriode.getTime())->getDebutPeriode()
    et finPeriode.getTime()->getFinPeriode()

    merci d'avance pour votre retour.

    Cdt,

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    quand je l'applique au mien ça marche pas
    C'est plutôt ce code qui serait intéressant.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Personnellement, pour la manipulation de dates, je te conseillerais jodatime.
    L'API, Date & Calendar du jdk est complètement buggée depuis des lustres.
    Ce n'est pas pour rien que jodatime rentre dans les prochains JRE.

    J'ai eut les mêmes soucis que toi sur des manipulations de dates : Calendar.add(....), j'ai essayé dans tous les sens & au final je suis passé à JodaTime.
    Si tu centralises toutes tes manipulations de date dans un ensemble restreint de classes, le changement vers Jodatime est ultra rapide.

    Je te conseille vivement de créer une classe de manipulation/calcul sur les dates
    qui en entrée accepte des java.util.Date, travaille en interne avec JodaTime et renvoie des java.util.Date. Ce sera transparent pour tout le reste de ton application.

  8. #8
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 86
    Par défaut exemple de code
    Bonjour,

    Merci pour votre proposition de jodatime,pourriez vous me donner un exemple de code d'utilisation de jodatime.

    Merci d'avance.

    Cdt,

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

Discussions similaires

  1. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  2. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  3. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

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