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 :

Lire une variable de type Date sous Java.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Par défaut Lire une variable de type Date sous Java.
    Bonjour à tous !!

    Je débute mon apprentissage dans le milieu de la programmation Java et j'aimerais savoir comment lire une variable de type Date au clavier ?
    J'ai essayer la méthode nextDate de la classe Scanner qui, apparemment n'existe pas !! une solution s'il vous plait !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.print("Donnez la date de naissance de l'étudiant: ");
    e1.setDateNaissance(sc.nextDate());
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il n'y a en effet pas de méthode toute faite pour récupérer une date. Il faut récupérer une String et la parser avec un format, car il y a de multiples façons d'écrire une date (tu peux en imposer une, ou plusieurs différentes).

    Il te faut lire tout d'abord une String (avec Scanner.hasNext()/Scanner.next(), ou éventuellement Scanner.hasNext(pattern)/Scanner.next(pattern) qui te permettrait de prétester la conformité de la saisie avec le format attendu.

    Ensuite, pour transformer la String en date, il faut déjà choisir quelle API de date tu vas utiliser. Il vaudrait mieux utiliser java.time, mais peut-être que tu seras obligé d'utiliser l'ancienne java.util.Date, tout dépend ce que tu veux en faire ensuite (en particulier, le type attendu par ta méthode setDateNaissance(), que tu peux changer d'ailleurs si tu es parti sur un java.util.Date).

    Pour transformer la variable String stringDate en java.time.LocalDate : java.time.LocalDate date = LocalDate.parse( stringDate, DateTimeFormatter.ofPattern(pattern));, avec pattern un format (doc ici).
    Pour transformer en java.util.Date : new SimpleDateFormat(pattern).parse( stringDate);, doc du format ici.

    NB: le pattern de Scanner et celui utiliser pour convertir une String en Date n'ont rien à voir (le premier correspondant à une expression régulière).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2017
    Messages : 12
    Par défaut
    Merci bien joel.drigo pour ta réponse , je vais me renseigner d'avantage sur les différents formats proposé pour tester après !!
    Et pour les API à utiliser, je connaissais pas le java.time... est-ce qu'il y a une différence entre celui-là et le java.util.Date ? ( NB: l'attribut DateNaissance que j'ai récupéré est de type Date).

  4. #4
    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
    Disons que java.util.Date ainsi que les utilitaires pour s'en servir, sont vieux de décennies et qu'au long de leur existence de nombreux problèmes ont été remontés avec eux.

    Principalement des mécanismes très contre-intuitifs, des incitations aux erreurs, une certaine lourdeur pour faire des choses simples, et certaines fonctions usuelles tout simplement absentes et devant être refaites.

    Les classes de java.time.* sont le résultat de repenser tout cela sur la base d'autres solutions qui ont été proposées depuis et qui sont très satisfaisantes.

    En résumé, c'est mieux, parce que depuis l'humanité a appris comment on fait, alors qu'avant elle savait pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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
    Salut,


    java.util.Date c'est le type date de base de Java depuis toujours, mais son implémentation pose beaucoup de soucis dont le principal est de ne représenter qu'un instant (nombre de millisecondes depuis le 1er janvier 1970 GMT) et d'être afficher selon un timezone...


    Avec Java 8 est arrivée une API de Date bien plus complète qui représente différent type pour différent usage.
    Si tu es sous Java 8 et que le choix de java.util.Date ne t'es pas imposé il serait préférable de partir sur cette nouvelle API

    Par exemple pour une date d'anniversaire on utilisera LocalDate qui représente une date contenant seulement les jour, mois, année.
    Pas d'heure, de timezone ou autre...


    a++

    [edit] grillé

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/05/2014, 12h24
  2. Problème dans le stockage d'une variable de type Date
    Par Pentos60 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/03/2011, 20h39
  3. lire une variable du type pointeur
    Par timtima dans le forum Débuter
    Réponses: 6
    Dernier message: 16/12/2007, 14h16
  4. Lire une variable saisie au clavier JAVA
    Par racoboss dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 13/11/2007, 14h12
  5. comment declarer une variable de type date ?
    Par MAJIK_ENIS dans le forum JDBC
    Réponses: 1
    Dernier message: 26/05/2006, 00h02

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