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 :

java parcourir les jours d'un Calendar,GregorianCalendar


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Par défaut java parcourir les jours d'un Calendar,GregorianCalendar
    Salut,

    j'aimerais parcourir les jours d'un Calendrier à partir de la date actuelle jusqu'a cette date plus sept jour, c'est à dire si nous sommes Mercredi par exemple, j'aimerai parcouri toutes les dates jusqu'a Mercredi de la semaine suivante. J'ai trouveé ceci sur le net
    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
    63
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Iterator;
     
    /**
     * kudos: http://helpdesk.objects.com.au/java/how-can-i-iterate-through-all-dates-in-a-range
     * @date   Jan 12, 2010
     */
    public class DateIterator implements Iterator<Date>, Iterable<Date> {
    	 private Calendar end = Calendar.getInstance();
    	    private Calendar current = Calendar.getInstance();
     
    	    public DateIterator(Date start, Date end)
    	    {
    	        this.end.setTime(end);
    	        this.end.add(Calendar.DATE, -1);
    	        this.current.setTime(start);
    	        this.current.add(Calendar.DATE, -1);
    	    }
     
    	    public boolean hasNext()
    	    {
    	        return !current.after(end);
    	    }
     
    	    public Date next()
    	    {
    	        current.add(Calendar.DATE, 1);
    	        return current.getTime();
    	    }
     
    	    public void remove()
    	    {
    	        throw new UnsupportedOperationException(
    	           "Cannot remove");
    	    }
     
    	    public Iterator<Date> iterator()
    	    {
    	        return this;
    	    }
     
    	    public static void main(String[] args)
    	    {
    	    	//Map<String, String>  mapValues = theform.getColumn();
     
    	    	//String newColumnValues[] = new ArrayList<String>(mapValues.values()).toArray(new String[0]);
     
    	    	Date d1 = new Date();
    	    	Calendar cal = Calendar.getInstance();
    	    	cal.add(Calendar.DATE, 20);
    	    	Date d2 = cal.getTime();
     
    	    	Iterator<Date> i = new DateIterator(d1, d2);
    	    	while(i.hasNext())
    	    	{
    	    		Date date = i.next();
    	    		System.out.println(date);
    	    	}
    	    }
     
    }
    Il ne correspond pas exactement a ce que je veux.

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Bonjour,

    la méthode pour décaler les jours est "add()":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Date today = new Date();
    Calendar cal = new GregorianCalendar();
    cal.setTime(today);
    cal.add(Calendar.DATE, 7);
    Voila, j'espère t'avoir aidé.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par camer12 Voir le message
    Il ne correspond pas exactement a ce que je veux.
    En quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Bonjour,

    Pour aller de la date actuelle à la date actuelle + 7 jours, il suffit de modifier le constructeur et par conséquent la méthode main():

    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
     
    // le constructeur
                public DateIterator(Date start)
    	    {
    	        this.current.setTime(start);
    	        this.end.setTime(start);
                    this.end.add(Calendar.DATE, 7);
    	    }
     
    // la methode main
                public static void main(String[] args)
                {
    	    	Date d1 = new Date();
     
    	    	Iterator<Date> i = new DateIterator(d1);
    	    	while(i.hasNext())
    	    	{
    	    		Date date = i.next();
    	    		System.out.println(date);
    	    	}
    	    }
    Par contre, je ne sais pas pourquoi dans ton constructeur original les dates de début et de fin étaient décrémentées de 1 jour.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Parce que sinon on ne retourne pas le premier élément

    Sinon, pourquoi se casser la nenette?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Calendar now = new Calendar();
    for (int i = 0; i<7;i++){ // 7 jours
      now.add(Calendar.Date,1);
      // faire les traitements dont tu as besoin avec cette nouvelle date.
    }

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

Discussions similaires

  1. Parcourir les jours de la semaine
    Par totot dans le forum PL/SQL
    Réponses: 8
    Dernier message: 30/03/2015, 11h46
  2. Réponses: 5
    Dernier message: 24/05/2012, 15h44
  3. les classes Date, Calendar, GregorianCalendar
    Par hb2ee dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 09/05/2009, 15h34
  4. Calendar determiner les jours de l'année pour un mois
    Par austin P. dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 27/11/2008, 16h22
  5. [VB.Net] Calendar et style sur les jours
    Par Sardonnen dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/11/2005, 10h23

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