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

Affichage des résultats du sondage: laquelle vous utilisé souvant ?

Votants
5. Vous ne pouvez pas participer à ce sondage.
  • Date

    0 0%
  • Calendar

    0 0%
  • GregorianCalendar

    5 100,00%
Collection et Stream Java Discussion :

les classes Date, Calendar, GregorianCalendar


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut les classes Date, Calendar, GregorianCalendar
    salut cher amis,

    je voulus signalé un problème avec les classes Date, Calendar : je vois qu'ils ne sont pas praticable du tous, dans le cas ou nous meme on fixe les parametre année, mois, jour...la résultat obtenu est totalement différent de ce qui a été fixer au_ début. sauf pour le GregorianCalendar on peut rémedier a ce problème en utilisant les entier prédefinie par la class :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MoisLettre = GregorianCalendar.JANUARY;
    GregorianCalendar.FEBRUARY;
     GregorianCalendar.MARCH;
    GregorianCalendar.APRIL;
     GregorianCalendar.MAY;
     GregorianCalendar.JUNE;
     GregorianCalendar.JULY;
    GregorianCalendar.AUGUST;
    GregorianCalendar.SEPTEMBER;
    GregorianCalendar.OCTOBER;
    GregorianCalendar.NOVEMBER;
     GregorianCalendar.DECEMBER;
    merci de me donnez votre avis sur cette point et n'hesitez pas si vous avez des solutions.

    cdt

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Effectivement, la gestion des dates est un peu particulière en java mais aller jusqu'à dire que les classes Date et Calendar ne sont pas praticables est légèrement exagéré à mon sens.
    Ce sont des classes qui sont quand même présentent depuis respectivement la JDK 1.0 et 1.1 et du coup elles sont toujours présentent (ce qui peut laisser penser qu'elles ont surement une utilité, non?).
    Maintenant, je sais pas exactement ce que tu cherches à faire et ce qui te pousse à lancer un sondage mais en tout cas, quelques articles dans la FAQ expliquent comment profiter de la gestion des dates.

  3. #3
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut
    Citation Envoyé par zorm Voir le message
    Bonjour,

    Effectivement, la gestion des dates est un peu particulière en java mais aller jusqu'à dire que les classes Date et Calendar ne sont pas praticables est légèrement exagéré à mon sens.
    .
    exagéré..
    je ne suis pas la pour me montré que je suis un pro, mais pour te convaincre il suffit de consulter le doc de JDK 6 il t'indique que l'emploi de Date(int,int,int) est non praticable. ainsi si t'utilise netbeans 6 tu va rencontré des choses comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date d = new Date(2009, 4, 3);//date barré, désolé je ne peut pas la répresenté
    Merci pour votre contribution

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Effectivement, la classe Date contient une majorité de constructeurs et de méthodes dépréciée. Pour ton exemple, on t'indique même la démarche à suivre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     replaced by Calendar.set(year + 1900, month, date)  or GregorianCalendar(year + 1900, month, date).
    Mais ce n'est pas pour autant que la classe Date n'est pas utile, c'est juste qu'elle ne doit pas être utilisée comme toi tu le souhaiterais.
    Ce qu'il faut comprendre, c'est que le rôle de la classe util.Date est de stocker de l'information, il n'y a pas de traitement à proprement parlé dedans. les méthodes incluant du traitement sont du coup dépréciées car ça sera le rôle d'autres classes de les faire. La classe Date est donc vu comme un ValueObject (utilisé notamment par la librairie JDBC), elle permet de stocker de l'information mais aussi de s'identifier/comparer par rapport à d'autres classes de même type (est ce le même, est ce avant moi, ou après)

  5. #5
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut
    après avoir etre sur le meme axe...


    oui, justement pour le stockage des champs Timestamp dans une base des données relationnelle elle est parfait, mais la problème ce pose, lorsque on veut récupéré ce champ et l'afficher.

    merci.

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par hb2ee Voir le message
    mais la problème se pose, lorsque on veut récupérer ce champ et l'afficher.
    Peux tu donc être plus précis sur ce point, donner le cas qui te pose réellement un problème?

    La classe Date utilise le nombre de millisecondes passées par rapport à une date fixe (1er janvier 1970 à 00:00:00)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Construit par rapport à System.currentTimeMillis()
    Date date = new Date();
    System.out.println(date);
    Ceci retourne bien l'heure courante, sans problème d'affichage:
    Tue May 05 11:50:53 CEST 2009

  7. #7
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut
    par exemple faire la declaration suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date d = new Date(2009,5,9);
    et affiche la résultat:


  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ce qui est affiché est tout à fait correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wed Jun 09 00:00:00 CEST 3909
    Pour comprendre le résultat, il suffit de lire la Javadoc :

    * @param year the year minus 1900.
    * @param month the month between 0-11.
    * @param date the day of the month between 1-31.
    Si tu voulais le résultat 9 mai 2009, il fallait faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(new Date(109,4,9));
    qui afficherait :

    Sat May 09 00:00:00 CEST 2009
    Il faut lire la Javadoc et tout est très simple.

  9. #9
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut
    merci pour le soucie je déja lu le javadoc;
    pour cette raison qu'ils ne sont pas pratique, parce que on doit ajouté un code qui va rendre le 1 à 0 et le 2 à 1 ainsi de suit...
    alors que dans une application graphique qui utilise l'aspect date ce n'est pas logique d'indiqué au utilisateur que le mois de juin est le 5ème mois alors que il est le 6ème..


    merci encor votre contribution apport la richesse d'info à cette discution

  10. #10
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par hb2ee Voir le message
    merci pour le soucie je déja lu le javadoc;
    pour cette raison qu'ils ne sont pas pratique, parce que on doit ajouté un code qui va rendre le 1 à 0 et le 2 à 1 ainsi de suit...
    alors que dans une application graphique qui utilise l'aspect date ce n'est pas logique d'indiqué au utilisateur que le mois de juin est le 5ème mois alors que il est le 6ème..


    merci encor votre contribution apport la richesse d'info à cette discution
    Ce n'est justement pas au niveau de l'utilisateur qu'il faut faire ça, l'utilisateur doit pouvoir entrer 2009 05 09 par exemple et c'est au programme de transcrire ça dans un format utilisable.

    On peut aussi stocker la date sous forme entière 20090509 si on a besoin que de l'année, du jour et du mois. C'est très simple ensuite à faire des comparaisons et surtout à stocker de manière externe (DB, fichiers).

  11. #11
    Membre confirmé Avatar de hb2ee
    Inscrit en
    Mars 2009
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 157
    Par défaut
    bien sur ce n'est pas au niveau utilisateur mais plutot au niveau couche metier ou que ce soit qu'on doit introduire le bout du code.

    et pour le stockage de date dans un BD il est delicat d'effectue des recherches dans les tables de la BD selon les dates ce pour cela je travaille toujours avec la methode que tu a cite convertir le date en entire

Discussions similaires

  1. java parcourir les jours d'un Calendar,GregorianCalendar
    Par camer12 dans le forum Général Java
    Réponses: 4
    Dernier message: 21/06/2011, 17h02
  2. Conversion de classe Date vers classe Calendar
    Par Bateau_Ivre dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/07/2008, 11h46
  3. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  4. delocaliser les classe
    Par otb82 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 17/11/2003, 08h54
  5. Les classes amies en Delphi
    Par Bruno75 dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2003, 19h34

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