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 :

[Débutant][Date]Soustraction de jours et comparaisons


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut [Débutant][Date]Soustraction de jours et comparaisons
    Bonjour,

    J'ai un date au format string (p.ex : 31.10.2006) et j'aimerais vérifier que cette date se trouve avant la date actuelle, soumise à une soustraction de jour/mois/année.

    Par exemple :
    27.08.2006 < 31.10.2006 - 1 mois et 1 jour

    Je pense qu'il faut convertir toutes les dates au format Date ou en millisecondes. J'ai également vu que ça peut se faire avec la classe GregorianCalendar. Mais voilà, j'arrive à rien, ça fait plus d'une heure que je mélange tout et que c'est le bordel.

    Je pense que ça doit pas être bien compliqué alors si qqun pourrait me donner un coup de main, ça serait sympa. Merci.
    Il y a 10 types de personnes, celles qui connaissent le binaire, et les autres...

  2. #2
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Effectivement, c'est pas bien compliqué :

    On a un Calendar ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Calendar cal = Calendar.getInstance();
    Un Calendar contient une Date courante, accessible par getTime() mais nous n'allons pas travailler avec celle-ci. Nous allons travailler avec le Calendar lui-même et ses méthodes bien sympathique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cal.get(VAR_NAME);
    cal.add(VAR_NAME,value);
    VAR_NAME est à remplacer par DAY_OF_WEEK, MONTH, etc. (JavaDoc).
    Tu peux enregistrer chaque date intéressante pour ton calcul dans une variable Date, grâce à getTime().

    En tricotant un peu, et armé de la JavaDoc, tu arriveras à ce que tu veux...

    edit :
    Petite précision, pour comparer ensuite les deux Date, utilise Date.after(Date) et Date.before(Date), ou Date.compareTo(Date) directement...
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Je n'arrive vraiment a rien avec la classe Calendar.

    cal.get(VAR_NAME); ne fonctionne pas avec les noms de variables donnés dans la javadoc.

    Comment peut on convertir un string numérique au format calendar ?
    J'ai une date au format dd.mm.yyyy à convertir et un nombre de jours.

    Comment puis-je soustraire un nombre de jours à une date ?
    Il y a 10 types de personnes, celles qui connaissent le binaire, et les autres...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Bloodscalp
    cal.get(VAR_NAME); ne fonctionne pas avec les noms de variables donnés dans la javadoc.
    Que veux-tu dire par là ??? Tu es sûr de bien l'utiliser ??? (montres ton code !)


    Citation Envoyé par Bloodscalp
    Comment peut on convertir un string numérique au format calendar ?
    J'ai une date au format dd.mm.yyyy à convertir et un nombre de jours.
    Comment convertir une chaîne en Date ?
    Ensuite il suffit de passer la valeur en millisecondes de la Date à ton Calendar...



    Citation Envoyé par Bloodscalp
    Comment puis-je soustraire un nombre de jours à une date ?
    Tout est dans la doc : la méthode add() accepte des valeurs négatives...


    a++

  5. #5
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Décompose tout d'abord ta date chainée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int day;
    int month;
    int year;
    (grâce à String ou StringTokenizer ou encore Integer...)

    Affecte ensuite ces valeurs au Calendar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cal.set(Calendar.YEAR,year);
    cal.set(Calendar.MONTH,month);
    cal.set(Calendar.DAY_OF_MONTH,day);
    Tu souhaite retirer 1 mois ? Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cal.add(Calendar.MONTH,-1);
    1 jour ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cal.add(Calendar.DAY_OF_MONTH,-1);
    Tu veux résupérer la Date ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date newDate = cal.getTime();
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Voilà j'ai réussi.

    J'explique pour ceux qui liraient ce post étant dans la même situation.

    En fait au début je croyais que un objet calendar était un calendrier, en fait c'est juste une date. Du coup, un calendar.add() vas ajouter le nombre de jours/moi/année à la date.

    J'ai du créer 2 dates de type calendar, 1 pour la date actuelle moins le delai et 1 pour la date que j'avais au format string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private Calendar CalendrierDelai = Calendar.getInstance();
    private Calendar CalendrierDepuisString = Calendar.getInstance();
    Ensuite, comme l'a si bien expliqué BlackWood, on transforme notre date string en integer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     intJour = Integer.parseInt(strJour);
    intMois = Integer.parseInt(strMois);
    intAnnee = Integer.parseInt(strAnnee);
     
    CalendrierDepuisString.set(Calendar.YEAR,intAnnee);
    CalendrierDepuisString.set(Calendar.MONTH,intMois);
    CalendrierDepuisString.set(Calendar.DAY_OF_MONTH,intJour);
    Ensuite, je veut vérifier que la date qui vient de mon string, date de avant int jours de la date actuelle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    intDelaiDate = Integer.parseInt(txtNbreJours.getText()); //mon délai viens d'un textfield
    CalendrierDelai.add(Calendar.DAY_OF_MONTH,-intDelaiDate);
     
    if(CalendrierDepuisString.before(CalendrierDelai)){
        //code que l'on veut faire si la date est avant la limite fixée
    }
    Et là, chez moi tout fonctionne parfaitement.

    Merci beaucoup a vous deux pour votre aide.
    Il y a 10 types de personnes, celles qui connaissent le binaire, et les autres...

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

Discussions similaires

  1. Comparaison d'une date avec son jour nommé
    Par zooffy dans le forum ASP.NET
    Réponses: 5
    Dernier message: 29/04/2010, 15h56
  2. [Débutant]Date jour en lettres
    Par Ayana dans le forum Langage
    Réponses: 3
    Dernier message: 15/10/2007, 17h22
  3. [débutant] date - 20 jours
    Par Australia dans le forum SQL
    Réponses: 8
    Dernier message: 07/09/2007, 14h52
  4. [débutant] Date avec jours semaine
    Par moomba dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 17/04/2007, 16h36
  5. [Oracle] [débutant] Date du jour
    Par kilian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/01/2007, 14h14

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