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 :

recuperer les 6 derniers mois


Sujet :

API standards et tierces Java

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut recuperer les 6 derniers mois
    salut,

    J'ai deux dates, une from et une to. Ces deux dates sont entrées par un utilisateur, je veux intyerdire à mon utilistaur d'entrer des dates qui different de plus de six mois, pour cela je dois faire la difference entre ces deux dates et si la difference est superieure à 6 mois alors lancer une exception.
    je purrai recuperer les mopis de chaque date en faisant getMonth() sauf le pb c'est lorsque les années sont differentes.

    Quelqu'un aura une solution ?

    merci

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    avec cette methode difDates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private static final int jourInMillisecs=86400000; //duree d'un jour en ms
    public static long difDates(Date date1,Date date2){
     
    	long a = date1.getTime()/jourInMillisecs;
    	long b = date2.getTime()/jourInMillisecs;
     
    	return (b - a);
    }
    et si la valeur retournee est superieure a 180, cela veut dire que cela fait plus de 6 mois.

  3. #3
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Euh ... ben un peu bof cette solution ...
    Je trouve plus propre de passer par un calendar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public boolean isDifferenceMoreThanNMonths(Date date1, Date date2, int n){
      if (date1==null || date2==null)
         throw new IllegalArgumentException("Dates to compare should not be null");
      if (date2.before(date1))
        return isDifferenceMoreThanSixMonths(date2,date1);
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH,-n);
    return date1.before(calendar.getTime());
    }

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Sinon la librairie Joda Time est apparemment (moi je ne l'ai jamais utilisée) faite pour effectuer ce genre de calcul très simplement ...

  5. #5
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 525
    Points : 150
    Points
    150
    Par défaut
    merci à tous mais comment tu definis isDifferenceMoreThanSixMonths ici ?

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    non à mon avis c'est un appel à la meme fonction ... pour pouvoir faire une soustraction propre ...

    je pense qu'il faut lire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return isDifferenceMoreThanNMonths(date2,date1,6);

  7. #7
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Ah oui désole j'ai mis un paramètre de plus après coup et oublié de le mettre partout ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public boolean isDifferenceMoreThanNMonths(Date date1, Date date2, int n){
      if (date1==null || date2==null)
         throw new IllegalArgumentException("Dates to compare should not be null");
      if (date2.before(date1))
        return isDifferenceMoreThanNMonths(date2,date1,n);
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH,-n);
    return date1.before(calendar.getTime());
    }
    comme le disait in ...

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    Salut,

    Si tu veux faire des calcul sur les date il faut que tu utilise la library Joda-time qui est vraiment simple et puissante pour ce genre de chose

    ++

  9. #9
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par chtig
    Euh ... ben un peu bof cette solution ...
    Je trouve plus propre de passer par un calendar :
    Oui pourquoi faire simple quand on peut faire plus compliqué

    tu peux expliquer pourquoi c'est bof! ca m'interesse.

  10. #10
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    C'est ça que je trouve bof :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static final int jourInMillisecs=86400000; //duree d'un jour en ms
    plus globalement le fait que pour moi c'est coder en C qqpart que de faire ça et pas en objet ....

  11. #11
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par chtig
    C'est ça que je trouve bof :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static final int jourInMillisecs=86400000; //duree d'un jour en ms
    plus globalement le fait que pour moi c'est coder en C qqpart que de faire ça et pas en objet ....
    Ca peut tout a fait etre une propriete d'une classe OutilsDates (definie comme une constante) qui te donne le nombre de ms dans un jour(on peut eventuellement y mettre un getter et un setter quoique).
    Donc dans ce cas ca reste de la POO.

  12. #12
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    C'est pas dans ce sens là que je voulais dire que ce n'était pas très objet.
    Ca donne simplement l'impression que tu manipules les objets Date comme des long de ms.
    Je suis d'accord qu'en implémentation sous-jacente, c'est un peu le cas, mais la façon dont tu le vois est différente.

    Pas facile d'expliquer un "sentiment" ^^

Discussions similaires

  1. [Dates] Récupérer les 6 derniers mois
    Par identifiant_bidon dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 09h21
  2. recuperer les 3 derniers enregistrements
    Par flagodzki dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/09/2007, 17h17
  3. [MySQL 3.23.41]Requete qui affiche les 6 derniers mois
    Par nanarou dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/09/2006, 19h07
  4. [Requette] les 12 derniers mois seulement
    Par bob75000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2006, 13h48
  5. [simpleXML] XML : comment recuperer les x derniers objets?
    Par mozvillat dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 07/07/2006, 15h10

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