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] Obtenir automatiquement jour avant et après


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 36
    Points : 39
    Points
    39
    Par défaut [Date] Obtenir automatiquement jour avant et après
    Bonjour,

    Désolé si ma question est un peu bête, mais pour l'instant je n'ai pas trouvé de solution adéquate.

    Je suis en train de construire une espèce d'agenda dans une application web. Pour cela je travaille avec les classes Calendar et GregorianCalendar pour manipuler les dates. Mes tests fonctionnent, mais je ne trouve pas de méthode, ou une librairie, me permettant de générer automatiquement le jour précédent ma date actuelle ou le jour suivant.

    Par exemple si je travaille sur la date 30/01/2006, grâce à la méthode roll() j'arrive à 31, puis je passe à 1 pour le jour, mais le mois reste à 0 (janvier=0, février=1, ...).

    N'existe-t-il donc pas de fonction tout simple me permettant d'obtenir la date suivant ma date actuelle avec le mois et l'année correctement initialisée ?

    Cordialement.

  2. #2
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Bonjour

    Tout simplement par un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monCalendar.add(Calendar.DATE,1);
    pour te caler au jour d'après ou un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monCalendar.add(Calendar.DATE,- 1);
    pour te caler le jour d'avant.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Points : 144
    Points
    144
    Par défaut
    Mes tests fonctionnent, mais je ne trouve pas de méthode, ou une librairie, me permettant de générer automatiquement le jour précédent ma date actuelle ou le jour suivant.
    Si j'ai bien compris il te suffirai d'avoir un système pour faire jour +1 et jour -1.

    Dans ce cas là =>http://java.developpez.com/faq/java/...DATE_operation te dira comment faire pour le principe.

    Sinon je pense qu'un simple ( code fait à l'arrache donc à rectifier avec le précédent lien )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Calendar calendar= new GregorianCalendar();
    //pour demain
    Date tomorrow= calendar.add(Calendar.day,1).getTime();
     
    //pour hier
    Date yesterday= calendar.add(Calendar.day,-1).getTime();
    Je ne sais pas quel day utiliser dans ton cas ( day of week, day of year etc ... ) c'est à toi de voir.

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par kisame
    code]
    Calendar calendar= new GregorianCalendar();
    Date now = new Date();
    calendar.setTime(now);
    Date tomorrow= calendar.add(Calendar.day,1);
    Date yesterday= calendar.add(Calendar.day,-1);[/code]
    Trois remarques sur ce code :
    1/Le constructeur par défaut de GregorianCalendar l'initialise déjà à la date et à l'heure courante donc inutile de lui affecter la Date courante.
    2/la méthode add de Calendar (et GregorianCalendar) est void (c'est une méthode d'altération) donc je ne vois pas comment tu peux la réaffecter à une Date.
    3/Les constantes statiques de Calendar doivent doivent s'écrire en majuscule (ex: Calendar.DATE, Calendar.DAY_OF_MONTH).

    C'était vraiment à l'arrache!

    Le prend pas mal, kisame, je chipote!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Points : 144
    Points
    144
    Par défaut
    lol merci de l'avoir précisé quand même parce que je pensais que tu étais sérieux. Ormis pour le getTime(), la date du jour c'est pas vraiment une erreur , et puis le fait d'évoir mis day en minuscule c'était juste car je ne savais plus quel day il fallait utiliser ( je laisse cette erreur car elle est volontaire).

    Je modifie mon code pour l'erreur du getTime().

    Mon post ( posté en même temps que le tiens ) n'avait pour but qu'une aide et non un code parfait qu'il faut utiliser à tout prix.

    edit : j'ai remarqué une autre erreur du coup . Je fais un add jour +1 pour avoir demain et dessuite apres un add jour -1 pour avoir hier. Or si je fais un +1 et ensuite un -1 je retombe sur ajourd'hui ( et non hier) . Ce bug n'est bien sur pas corrigé dans le code que j'ai mis et je te laisse le soin de le corriger toi même merci

  6. #6
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Non non j'étais pas sérieux, si tu veux le truc qui me gênait le plus c'était ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date tomorrow= calendar.add(Calendar.day,1);
    Tu ne peux pas affecter calendar.add à une Date vu que la méthode add est void. Ca ne compilerait pas. C'est vrai que les 2 autres points c'est plus discutable enfin bon bref... Désolé pour le malentendu.

  7. #7
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 36
    Points : 39
    Points
    39
    Par défaut
    Merci pour vos réponses. Cela marche impeccable.

    Mon erreur venait du fait que j'utilisais la fonction roll() à la place de la fonction add().

    Merci encore !

  8. #8
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Petite méthode utilitaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static Date addDaysToDate(Date date, int nbDays){
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
            cal.add(Calendar.DATE, nbDays);
            return cal.getTime();
        }
    C'est toujours pratique.

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

Discussions similaires

  1. Methode pour afficher la date de deux jours avant
    Par pticouta dans le forum Général Python
    Réponses: 2
    Dernier message: 02/03/2012, 14h06
  2. Réponses: 2
    Dernier message: 20/01/2009, 13h31
  3. [Dates] nombre de jours avant Noël
    Par hubald dans le forum Langage
    Réponses: 1
    Dernier message: 19/11/2008, 16h32
  4. Réponses: 14
    Dernier message: 10/08/2006, 15h53
  5. [Date] Récuperer la date de 7 jours avant
    Par smy85 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/05/2004, 12h05

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