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 :

Comparaison de dates java.util.time


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut Comparaison de dates java.util.time
    Bonjour,

    je dois comparer deux dates. L’une est la date du système, l’autre est une date time stamp transformée en date avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Date date = new Date(unixSeconds*1000L);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));		
    formattedDate = sdf.format(date);
    J’ai essayé d’utiliser JODA Time, mais après ne pas avoir réussi à le faire fonctionner, on m’a dit qu’il était préférable d’utiliser le paquet java.time. Mais lorsque je veux comparer des dates, il faut utiliser la méthode duration qui prends en compte des temporals.
    Or, je n’ai qu’une date et une chaîne de caractères.
    Je crois qu’on peut transformer une variable LocalDateTime en temporal, mais pour l’autre date, je ne vois pas du tout comment faire.

    Pouvez-vous m’éclairer, merci.

  2. #2
    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
    Hello,

    pour comparer deux dates de même type on appelle compareTo() de l'une sur l'autre. Pas besoin de duration.

    Citation Envoyé par Hippocrène Voir le message
    Or, je n’ai qu’une date et une chaîne de caractères.
    Cette partie-là je ne la comprends pas bien en fait. Elles viennent d'où ces deux dates et ça sert à quoi de les comparer ?

    Dans le code que tu nous as montré, ta String a été construite à partir d'un objet qui est déjà une Date. Du coup, ça servait à rien de la transformer en String, il fallait utiliser la Date que tu avais déjà, tout simplement. Pourquoi faire, une String ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Salut,

    quand j’ai écris « deux dates » je pensais à la date actuelle (il me semble qu’on peut la générer avec Date date = new Date() et ça suffit).
    La chaîne de caractère, je pensais à celle que je transforme. En fait, le code ne viens pas totalement de moi, et je pensais qu’il transformait le time stamp en date, puis qu’il formatait la date avec le SimpleDateFormat, mais en renvoyant un string ; donc la date que j’ai avant n’est pas au bon format. Mais peut être que ça n’est pas ça.

    Quand je dis comparer deux dates, je veux dire savoir de combien de jours elles sont distantes.

  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
    Citation Envoyé par Hippocrène Voir le message
    Quand je dis comparer deux dates, je veux dire savoir de combien de jours elles sont distantes.
    Dans ce cas il vaut mieux utiliser java.time.*, en effet.
    Soit LocalDate soit LocalDateTime, ça dépend si tu t'intéresses à l'heure ou pas.

    Et juste long days = date1.until(date2, ChronoUnit.DAYS); pour la différence en jours.

    Pour la date actuelle, c'est LocalDate.now() ou LocalDateTime.now().

    Citation Envoyé par Hippocrène Voir le message
    La chaîne de caractère, je pensais à celle que je transforme. En fait, le code ne viens pas totalement de moi, et je pensais qu’il transformait le time stamp en date, puis qu’il formatait la date avec le SimpleDateFormat, mais en renvoyant un string ; donc la date que j’ai avant n’est pas au bon format. Mais peut être que ça n’est pas ça.
    Alors en fait il faudrait arrêter les dissertations de texte, et montrer simplement où tu as cette date qui t'intéresse, dans le code.
    Ce qui nous intéresse, c'est : est-ce que au départ, avant que tu fasses des trucs dessus alors que tu sais même pas s'il faut ou pas faire ces trucs, c'est une String, une LocalDate, un LocalDateTime, une Date ou autre chose ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2014
    Messages : 162
    Par défaut
    Ah ok, merci 😃

    Au début j’ai un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long unixSeconds = 1465422642;
    Ici, j’ai une date non formatée (il me semble) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date date = new Date(unixSeconds*1000L);

    Ici, j’ai une chaîne de caractères dans la bonne disposition des jours, mois,…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formattedDate = sdf.format(date);

  6. #6
    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
    Citation Envoyé par Hippocrène Voir le message
    Ici, j’ai une date non formatée (il me semble) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date date = new Date(unixSeconds*1000L);
    Juste une date, représentée par la classe java.util.Date.

    Citation Envoyé par Hippocrène Voir le message
    Ici, j’ai une chaîne de caractères dans la bonne disposition des jours, mois,…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formattedDate = sdf.format(date);
    On ne formate une date que pour l'afficher, ou la stocker sous forme de texte.

    Le format n'a de sens que lorsqu'on convertit la date en String. La question soulevée est : pourquoi la convertir en String ? Parce que pour comparer des dates, c'est inutile.
    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.

Discussions similaires

  1. Passer d'un String à un objet Date java.util
    Par babolow dans le forum Langage
    Réponses: 1
    Dernier message: 08/06/2013, 19h48
  2. Réponses: 5
    Dernier message: 06/01/2010, 11h24
  3. Conflit entre java.util.Date et class java.sql.Date
    Par vonitiana dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 11h43
  4. de java.sql.Date à java.utile.Date
    Par Sniper37 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 23/05/2006, 16h10
  5. Réponses: 4
    Dernier message: 06/02/2004, 16h23

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