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

Java Discussion :

Ajouter un nombre de jour à une date


Sujet :

Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Ajouter un nombre de jour à une date
    Bonjour,

    Un petit truc tout bete: j'essaie d'ajouter un nombre de jour à une date dans un certain format.

    Voilà ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static String addDays(String date, Integer days){
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		String result = "";
    		try {
    			Date df = sdf.parse(date);
    			df.setTime(df.getTime() + (days * 24 * 3600 * 1000));
    			result = String.valueOf(df.getMonth());
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return result;
    	}
    Pour l'instant, comme je fais un test, je retroune juste le mois de la nouvelle date. Or quand j'appelle ma méthode comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(DateUtil.addDays("2008-04-21", 15));
    Il me retourne 4.

    Bizarre, non?

    Merci :-)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Non, c'est normal. Si tu avais lu la javadoc, tu aurais vu que la numérotation commence à zéro

  3. #3
    Membre habitué Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Points : 166
    Points
    166
    Par défaut
    Et si tu vas plus loin dans la javadoc, tu trouveras la classe java.util.Calendar qui sert à ce type de manipulation.

    Lorsque tu manipules de dates, il faut avoir 3 classes à l'esprit :
    • java.util.Date = la date elle-même
    • java.util.Calendar = une fabrique de date
    • java.text.DateFormat = pour formater les dates


    Alexis

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    Justement, même dans Calendar, il considère que le premier mois est numéroté 0 :-(.

    Merci :-)

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par thierry_b Voir le message
    Justement, même dans Calendar, il considère que le premier mois est numéroté 0 :-(.
    Et ça te pose problème ?

  6. #6
    Membre habitué Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Points : 166
    Points
    166
    Par défaut
    J'avais mal regardé ton code. Tu utilises la méthode getMonth qui est dépréciée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    result = String.valueOf(df.getMonth());
    Alexis

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut re
    Re,

    Comme cela, ça marche (en lui donnant une date normale de la forme yyyy-MM-dd) :

    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
    public static String addDays(String date, Integer days){
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		String result = "";
    		try {
    			Date df = sdf.parse(date);
    			GregorianCalendar calendar = new java.util.GregorianCalendar();
    			calendar.setTime(df);
    			System.out.println(calendar);
    			calendar.add (Calendar.DAY_OF_MONTH, days);
    			System.out.println(calendar);
    			result = sdf.format(calendar.getTime());
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return result;
    	}
    Merci :-)

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

Discussions similaires

  1. Ajouter un nombre de jours à une date
    Par FanFan44 dans le forum Débutez
    Réponses: 1
    Dernier message: 10/07/2013, 13h04
  2. Réponses: 3
    Dernier message: 28/02/2012, 19h03
  3. Ajout d'un nombre de jours à une date
    Par thecanea dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/08/2011, 11h03
  4. Réponses: 2
    Dernier message: 03/01/2006, 14h58
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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