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

avec Java Discussion :

premier lundi de la semaine


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut premier lundi de la semaine
    salut le phorum

    je tente desespérement depuis 2 jours de creer une routine me permettant de déterminer le lundi de la semaine afin de creer un filtre sur le lundi - 15 de la semaine
    j'ai bien trouvé des soluces sur le phorum mais lorsque je veux les appliquer j'ai un message d'erreur car soit il me manque un } ou les formats date et int ne sont pas compatibles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ]// template routine Java
    package routines;
     
    import java.util.*;
    import java.text.*;
     
    public class JourDeLaSemaine {
     
    String str = "2009/04/27";
    java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    java.util.Date dte = sdf.parse(str);
    sdf = new SimpleDateFormat("EEEE");
    return sdf.format(dte);
    }
    quelqu'un aurait il une idée pour me faire avancer sur ce point

    merci d'avance

    munity

  2. #2
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Points : 6 506
    Points
    6 506
    Par défaut
    Déja le gros problème c'est que tu ne peux pas définir le contenu d'une méthode dans une classe ...

    Donc faire plutot :

    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
    package routines;
     
    import java.util.*;
    import java.text.*;
    import java.text.SimpleDateFormat;
     
    public class maRoutine{
     
    public SimpleDateFormat JourDeLaSemaine () {
    String str = "2009/04/27";
    java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    java.util.Date dte = sdf.parse(str);
    sdf = new SimpleDateFormat("EEEE");
    return sdf.format(dte);
    }
    }
    En définissant avant la méthode JourDeLaSemaine () la description de la méthode.

    Mais c'est bizard que tu ais ça car normalement quand tu créés une nouvelle routine, il y a un exemple donc tu ne peux pas te tromper (normalement)

    Mais bon revois ta métohde car elle est fausse je t'ai juste expliquer ton erreur. Voili voilou. Un conseil : test la dans Eclipse

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci pour ta réponse
    je débute en java voilà la raison pour laquelle j'ai fait n'importe quoi

    par contre qu'est ce donc que "eclipse"

    merci encore

  4. #4
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Citation Envoyé par munity Voir le message
    par contre qu'est ce donc que "eclipse"

    merci encore
    Réponse qu'est-ce qu'Eclipse

    pour Tutos, faq, forums

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    re à tous

    quelqu'un pourrais t il m'indiquer pourquoi j'ai le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Non concordance de types : impossible de convertir de String en SimpleDateFormat

    a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return sdf.format(dte);
    sur le code ci dessous
    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
    package routines;
     
     
    import java.util.*;
    import java.text.*;
    import java.text.SimpleDateFormat;
     
    public class Test{
     
    public SimpleDateFormat JourDeLaSemaine () {
    	String str = "2009.04.27";
    	java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
    	java.util.Date dte = sdf.parse(str);
    	sdf = new SimpleDateFormat("EEEE");
    	return sdf.format(dte);
    }
    }
    merci beaucoup

  7. #7
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Tu as deux données de 2 types différents...un string d'un côté et une date de l'autre, il faut que tu "cast" Visiblement tu as tenté ca ne passe pas
    Tes problèmes n'ont rien avoir avec Talend, c'est du pur Java la... (je déplace le sujet tu auras plus de réponse)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci
    j'espère car je suis au bout du rouleau

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Laissé pour info mais solution bien plus élégante juste en-dessous

    Bonjour,

    Le problème vient du fait que dans ta signature de méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public SimpleDateFormat JourDeLaSemaine ()
    tu indiques qu'elle va retourner un objet de type SimpleDateFormat or ton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return sdf.format(dte);
    retourne un objet de type String (ci-dessous le lien vers la javadoc)
    http://javasearch.developpez.com/j2s...a.util.Date%29

    Il te faut donc soit modifier la signature de la méthode, soit modifier l'objet retourné (mais comme je doute que tu veuilles récupérer une classe de formatage il faut soit retourner une String soit une Date)

    Sinon concernant ton problème tu devrais te tourner vers la classe GregorianCalendar et faire un truc de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Date getPremierJourDeLaSemaine (Date date) {
       GregorianCalendar gc = GregorianCalendar.getInstance(); // Création de l'objet
       gc.setTime(date); // On l'initialise avec la date passée en paramètre
       // Tant qu'on n'est pas positionné sur un lundi on retire un jour
       while (gc.get(GregorianCalendar.DAY_OF_WEEK) != GregorianCalendar.MONDAY) { 
          gc.add(GregorianCalendar.DAY_OF_WEEK, -1);
       }
       // On est maintenant sur un lundi et on peut retourner la date correspondante
       return gc.getDate();
    }
    Sinon si l'envie te prenait d'initialiser directement le calendar tu pourrais faire :

    mais attention, ces coquins font débuter l'année au mois 0 et non pas 1 donc avril c'est 3. Il est également possible d'utiliser les constantes de la classe Calendar, dont hérite GregorianCalendar, histoire de ne plus se poser de question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gc.set(2009, GregorianCalendar.APRIL, 27);
    Voilou, bon courage pour la suite

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Oui enfin, pour mettre un calendar sur le lundi de la semaine, le plus simple est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* Signaler au calendrier qu'en France,
      lundi est le premier jour de la semaine, pas le second.
      À ne faire que si on tient à imposer le calendrier français.
      Sinon, laisser l'autodétection. */
    gc.setFirstDayOfWeek(Calendar.MONDAY);
     
    // Aller au lundi de la semaine en cours.
    gc.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    plutôt que de soustraire un jour en boucle.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Oui enfin, pour mettre un calendar sur le lundi de la semaine, le plus simple est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* Signaler au calendrier qu'en France,
      lundi est le premier jour de la semaine, pas le second.
      À ne faire que si on tient à imposer le calendrier français.
      Sinon, laisser l'autodétection. */
    gc.setFirstDayOfWeek(Calendar.MONDAY);
     
    // Aller au lundi de la semaine en cours.
    gc.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    plutôt que de soustraire un jour en boucle.
    Tu vas rire (ou pas) mais je me disais bien qu'il y avait plus simple mais en essayant ta méthode ça ne fonctionnait pas, et maintenant bien évidemment cela fonctionne.

    Bon c'est vendredi il est bientôt temps d'aller noyer sa honte dans un verre de Beaujolais

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 772
    Points : 319
    Points
    319
    Par défaut
    merci à vous deux
    cela marche très bien (l'une ou l'autre version d'ailleurs)
    par contre j'ai du modifié le code comme suit car je travaille dans Talend et apparemment il aime pas trop le GregorianCalendar malgrè l'avoir déclaré??
    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
    // template routine Java
    package routines;
    import java.util.*;
    import java.util.*;
    import java.util.*;
     
     
    public class test3 {
     
    	public static Date getPremierJourDeLaSemaine (Date date) {
    		if (date == null) {
                return null;
            }
    		Calendar gc = Calendar.getInstance(); // Création de l'objet
    		gc.setTime(date); // On l'initialise avec la date passée en paramètre
    		   // Tant qu'on n'est pas positionné sur un lundi on retire un jour
    			gc.setFirstDayOfWeek(Calendar.MONDAY);
     
    		   // On est maintenant sur un lundi et on peut retourner la date correspondante
    		   return gc.getTime();
    		}}
    munity

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

Discussions similaires

  1. obtenir le premier lundi de la semaine dans une semaine donnée
    Par olivtone dans le forum Développement
    Réponses: 4
    Dernier message: 03/07/2015, 16h54
  2. Afficher la date du premier lundi dans la semaine
    Par ghir_ana dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/06/2011, 18h05
  3. Réponses: 1
    Dernier message: 16/05/2010, 02h29
  4. Mettre lundi comme premier jour de la semaine?
    Par catoucat dans le forum Access
    Réponses: 2
    Dernier message: 14/06/2006, 07h05
  5. Récupérez premier jour de la semaine
    Par Krapulax dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/10/2003, 17h18

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