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 :

[Date] Calcul entre deux dates


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Par défaut [Date] Calcul entre deux dates
    Bonjour tout le monde,

    Voila, j'ai deux date, java.util.date, et je souhaite connaitre la différence en année entre ces deux dates :

    par exemple entre 01/03/2002 et 01/02/2005 c'est egal a deux ans ...

    Voila est ce que vous connaissez quelques choses qui faite cela???

    J'ai chercher et je ne trouve pas ...

    Merci

  2. #2
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    Citation Envoyé par djodjo
    Bonjour tout le monde,

    Voila, j'ai deux date, java.util.date, et je souhaite connaitre la différence en année entre ces deux dates :

    par exemple entre 01/03/2002 et 01/02/2005 c'est egal a deux ans ...

    Voila est ce que vous connaissez quelques choses qui faite cela???

    J'ai chercher et je ne trouve pas ...

    Merci
    Tout dépends de ce que tu veux ?

    Si pour toi 30/12/2005 et 02/01/2006 il y a 1 an alors tu peu simplement faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar dateA = ....;
    Calendar dateB = ....;
     
    int dYear = Math.abs( dateA.get( Calendar.YEAR ) - dateB.get( Calendar.YEAR ) );

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Par défaut
    Merci de ta réponse,

    Justement je n'estime pas que entre 30/12/2005 et 02/01/2006 il y a un an, je compte les année que entre 30/12/2005 et 30/12/2006 Voilà et c'est la mon probleme !!!

  4. #4
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    J'écrirais une méthode de ce style:

    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
    package test;
     
    import java.util.Calendar;
    import java.util.GregorianCalendar;
     
    /**
     * Test pour difference de dates (sur l'année)
     * @author André Sébastien.
     */
    public class TestDate {
     
        /** Creates a new instance of TestDate */
        public TestDate() {
        }
     
        /** Return the number of complete year since dateA between dateA and dateB
         *  @param dateA Minimum date threshold
         *  @param dateB Maximum date threshold
         *  
         *  Remark: if dateA > dateB, dateB is used as minimum threshold.
         *  
         *  @return Complete years since dateA between dateA and dateB
         */
        public static int diffYear(Calendar dateA , Calendar dateB )
        {   if( dateA == null || dateB == null ) throw new IllegalArgumentException("dateA and dateB can't be null");
     
            Calendar minDate = ( dateA.compareTo(dateB) > 0 ? dateB : dateA );
            Calendar maxDate = ( minDate == dateA ? dateB : dateA );
     
            Calendar dummyDate = (Calendar)maxDate.clone();
                     dummyDate.set( Calendar.DAY_OF_MONTH , minDate.get( Calendar.DAY_OF_MONTH ) );
                     dummyDate.set( Calendar.MONTH , minDate.get( Calendar.MONTH ) );
     
            boolean lastYearCompleted = (dummyDate.compareTo(maxDate) < 0);
     
            int delta = maxDate.get(Calendar.YEAR) - minDate.get(Calendar.YEAR);
            if( ! lastYearCompleted ) delta = delta - 1;
     
            // Result
            int result = Math.max( delta , 0 );
            System.out.println("Difference = " + result);
            return result;
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
     
            // 01/03/2002 - 01/02/2005 == 2
            diffYear( new GregorianCalendar(2002,02,01) , new GregorianCalendar(2005,01,01) );
     
            // 24/07/2004 - 28/09/2004 == 0
            diffYear( new GregorianCalendar(2004,06,24) , new GregorianCalendar(2004,8,28) );
     
            // 13/03/2003 - 20/07/2005 == 2
            diffYear( new GregorianCalendar(2003,02,13) , new GregorianCalendar(2005,06,20) );
     
            // 13/03/2003 - 12/03/2005 == 1
            diffYear( new GregorianCalendar(2003,02,13) , new GregorianCalendar(2005,02,12) );
        }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 74
    Par défaut
    Je te remercie de ta réponse et désolé de te répondre si tard a mon tour !!!

    C'est bon ca marche super bien !!!

    Par contre au début je pensais qu'il existait déjà une méthode pour réaliser cela, suis déçu !!!!
    lol

    merci en tout cas !!!

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Par défaut
    Et pour avoir l'écart en jour ?
    est on obligé d'écrire une méthode de ce style ou y a-t-il une méthode existante ?

    compareTo() me dit seulement laquelle des 2 dates est la plus grande il me semble...

Discussions similaires

  1. [phpMyAdmin] Comment vider une table entre deux dates ou entre deux id avec phpMyAdmin
    Par patrmich dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 24/05/2014, 14h48
  2. Calcul entre deux dates
    Par diegochile dans le forum Deski
    Réponses: 1
    Dernier message: 02/10/2008, 14h30
  3. [Dates] calcul entre deux dates
    Par angeblanc22 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2007, 12h42
  4. Réponses: 1
    Dernier message: 10/08/2006, 14h43
  5. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17

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