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 :

Calendar, jouer avec les semaines


Sujet :

Collection et Stream Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut Calendar, jouer avec les semaines
    Bonjour,
    voici le contexte :
    j'ai une IHM contenant trois champs :
    - date début
    - date fin
    - périodicité ( hebdo / mensuel )

    Le but, c'est que je découpe ma période par semaine ou par mois ( en fonction de la périodicité, pour passer la date de début et fin de chaque semaine à une requête SQL.
    ex:

    période : du 19/08 au 30/08.
    Il faut que j'arrive à récupérer à partir du 19/08, le dernier jour de la semaine : 23/08, et même chose à partir du 30/08 mais dans l'autre sens, premier jour de la semaine.

    Afin de passer ces deux dates au BETWEEN de mon SQL .


    Pour l'instant je fais comme ça :

    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
    		Calendar cal  = Calendar.getInstance();
    		System.out.println("--"+cal.getTime().toString()+"--");
    		cal.set(Calendar.DAY_OF_WEEK , cal.getFirstDayOfWeek() );
    		System.out.println("Semaine : "+cal.get(Calendar.WEEK_OF_YEAR));
    		System.out.println(cal.getTime().toString());
    		cal  = Calendar.getInstance();
    		cal.set(Calendar.DAY_OF_WEEK , cal.getFirstDayOfWeek() * 7 );
    		System.out.println(cal.getTime().toString());
     
    		cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR) +1);
    		System.out.println("Semaine : "+cal.get(Calendar.WEEK_OF_YEAR));
    		cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
    		System.out.println(cal.getTime().toString());
    		cal.set(Calendar.DAY_OF_WEEK , cal.getFirstDayOfWeek() * 7 );
    		System.out.println(cal.getTime().toString());

    Il me reste plus qu'à mettre le tout dans une boucle et exécuter ma requête à chaque fois.

    C'est la bonne méthode ou il y a plus simple?
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    - Alors déjà, le dernier jour de la semaine du lundi 19/08/2013, c'est le dimanche 25/08/2013, pas le 23.

    - Ensuite, pour avancer d'une semaine dans un Calendar, le plus simple est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cal.add(Calendar.WEEK_OF_YEAR, 1);
    - Après, je n'ai pas la moindre idée de ce que cette ligne est censée faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cal.set(Calendar.DAY_OF_WEEK , cal.getFirstDayOfWeek() * 7 );
    Multiplier un cal.getFirstDayOfWeek() n'a pas le moindre début de sens.

    - Enfin, ce genre de calcul de dates est en général bien plus clair en utilisant la bibliothèque tierce Joda-Time.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Ok, voici le résultat avec Joda :

    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
    	public static void main(String[] args) {
     
    		DateTime dt = new DateTime();
    		System.out.println("---"+dt.toString("dd/MM/YYYY HH:MM:SS")+"---");
    		System.out.println("S"+dt.getWeekOfWeekyear());
    		System.out.println(dt.minusDays(dt.getDayOfWeek()-1).toString("dd/MM/YYYY HH:MM:SS"));
    		System.out.println(calcNextDay2(dt, DateTimeConstants.SUNDAY).toString("dd/MM/YYYY HH:MM:SS"));
    		dt = dt.plusWeeks(1);
    		System.out.println("S"+dt.getWeekOfWeekyear());
    		System.out.println(dt.minusDays(dt.getDayOfWeek()-1).toString("dd/MM/YYYY HH:MM:SS"));
    		System.out.println(calcNextDay2(dt, DateTimeConstants.SUNDAY).toString("dd/MM/YYYY HH:MM:SS"));
    	}
     
    	public static DateTime calcNextDay(DateTime d, int weekday) {
    	    return (d.getDayOfWeek() < weekday)?d.withDayOfWeek(weekday):d.plusWeeks(1).withDayOfWeek(weekday);
    	}
     
     
    	public static DateTime calcNextDay2(DateTime d, int day) {
    	    return calcNextDay(d,day);
    	}
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/05/2009, 10h53
  2. Réponses: 1
    Dernier message: 02/02/2009, 14h11
  3. Jouer avec les chaines de caractères ?
    Par vr900 dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/04/2007, 16h26
  4. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 10h01
  5. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 13h15

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