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 :

Gestion de date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut Gestion de date
    Bonjour tout le monde

    j'ai un probleme avec la gestion de date
    est ce que quelqu'un pourrait m'expliquer ce que font les methodes suivantes de la classe Calendar

    public abstract void add(int field,int amount)
    public void set(int field,int value)

    merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut Re: Gestion de date
    Salut,


    La méthode add() effectue une opération sur la date contenu dans le Calendar, par exemple le code suivant ajoutera deux mois à la date courante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar cal = Calendar.getInstance();
     
    cal.add( Calendar.MONTH, 2 );
    Ainsi si la date du jour est "06/01/2006", tu obtiendras "06/03/2006"...



    La méthode set() fixe la valeur d'un champs de la date, par exemple pour prendre le même exemple, tu peux spécifier le mois précis de l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar cal = Calendar.getInstance();
     
    cal.set( Calendar.MONTH, Calendar.MARCH );

    a++

  3. #3
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    ok merci

  4. #4
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    je vais donc exposer mon probleme


    je fais une requete sur une table grace à un preparedStatement sur une date qui a le format AAAAWW (annee semaine)
    et je veux pouvoir faire une boucle pour changer ma date et revenir par exemple 25 semaines en arriere
    actuellement grace à une methode personnelle je transforme ma date recuperé par Calendar.getTime() en 200601 (ou 01 represente le numero de semaine )
    et donc je voudrais faire une boucle pour que ma changer ma date et avoir les 25 dernieres semaines à partir de la date selectionnée

    et en l'occurence il faudrait les 6 derniers mois ...
    j'avais mis



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.WEEK_OF_YEAR, -MAX_WEEK + 1);
                    	cal.set(Calendar.WEEK_OF_YEAR,choices.getSemaineMois() - MAX_WEEK + 1);
    pstmt.setString(2, DateManager.convertJavaDateToString(cal.getTime(), "yyyyww")
    où :
    MAX_WEEK = 25 => constante
    DateManager.convertJavaDateToString(cal.getTime(), "yyyyww") => methode personnelle qui permet de convertir ma date au format AAAAWW

    je pensais qu'en faisant des manips add et set de la classe calendar je pouvais fixer la date à une date passée ...et recuperer par exemple 200548 (la 48 eme semaine de 2005) ..

    si quelqu'un a une idée je suis preneur

    merci

  5. #5
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    re

    je me manifeste à nouveau car certaines choses m'echappent

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import java.util.Calendar;
     
    public class TestCal{
     
    	public static void main(String[] args){
    		Calendar cal = Calendar.getInstance();
    		System.out.println(cal.getTime());
    		System.out.println(cal.WEEK_OF_YEAR);
     
    	}
    }
    et à l'affichage j'obtiens :

    Sat Jan 07 22:18:59 CET 2006
    3

    je comprends pas pourquoi j'obtiens la valeur 3 pour cal.WEEK_OF_YEAR et non pas 1

  6. #6
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    si tu mets ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(cal.get(cal.WEEK_OF_YEAR));
    ca ira mieux.
    je te laisse chercher pourquoi.
    Si tu trouves pas, viens le dire, je te donnerai des pistes de réflexion.

    Vincent

  7. #7
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Bonjour

    desolé pour le decalage

    sinon j'aimerais bien des pistes de reflexion
    pour moi quand je demande System.out.println(cal.WEEK_OF_YEAR) j'attends
    comme reponse 1 et non pas 3

  8. #8
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par isma4
    sinon j'aimerais bien des pistes de reflexion
    pour moi quand je demande System.out.println(cal.WEEK_OF_YEAR) j'attends
    comme reponse 1 et non pas 3
    Bonjour,

    Comme piste de réflexion:

    sais-tu qu'il existe d'autres calendriers que le calendrier grégorien?

    En plus, il existe plusieurs façons de déterminer la première semaine de l'année.

    Bonne recherche

  9. #9
    Expert confirmé


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Par défaut
    Citation Envoyé par isma4
    Bonjour

    desolé pour le decalage

    sinon j'aimerais bien des pistes de reflexion
    pour moi quand je demande System.out.println(cal.WEEK_OF_YEAR) j'attends
    comme reponse 1 et non pas 3
    cal est le nom de ton instance de classe Calendar.
    WEEK_OF_YEAR est une constante (sa valeur ne peut changer).

    Un peu d'explication:
    La classe Calendar gére entre autre le siècle, l'année, le mois, le jour, la semaie de l'année, la semaine du mois, le jour dans le mois, le jour dans l'année, le jour dans la semaine, ... Soit un total de 19 valeurs différentes.

    Les créateurs de la classe Calendar ont ici pris une décision dans la conception de leur classe:
    plutôt que d'avoir getEra(), getYear(), getWeekOfYear(), ...
    et setEra(int value), setYear(int value), setWeekOfYear(int value), ...
    ce qui aurait amené le nombre total de méthodes getXxx et setXxx à 72 (les 34 + 19*2), ils ont décidé de créer des constantes, comme ERA (siècle) YEAR, WEEK_OF_YEAR, ... (un total de 19), ainsi que 2 méthodes, get(int field) et set(int field, int value). (au lieu de 38 méthodes).

    Malgré cela, il y a tout de même 34 getters et setters ce qui est énorme. Alors, imagine un instant 72 méthodes.

    Bref, cal.WEEK_OF_YEAR te retourne la valeur de la constante. C'est-à-dire 3.
    cal.get(WEEK_OF_YEAR) te retourne la valeur du champs correspondant à la constante WEEK_OF_YEAR.

    J'espère que c'est plus clair.

    Vincent

  10. #10
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    oui effectivement c'est plus clair
    d'ailleurs je ne sais pas pourquoi mais effectivement j'avais zappé que je manipulais des constantes ...

    en tout cas merci
    je vais me pencher sur la classe gregorianclandar qui me semble peut etre plus appropriée même si la Calendar me donne dejà ce que je veux ...

    bonne journée
    et merci encore

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

Discussions similaires

  1. gestion de date de fin de mois
    Par bzh56 dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/01/2005, 10h15
  2. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  3. [MCD] Gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 13
    Dernier message: 08/09/2003, 09h29
  4. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  5. [BEST_PRACTICE][Merise] MCD & gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 4
    Dernier message: 16/04/2003, 17h07

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