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

Entrée/Sortie Java Discussion :

Récupérer la date d'un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut [Résolu] Récupérer la date d'un fichier
    Bonjour,

    alors voila je dois récupérer la date de modification d'un fichier (sous windows) et qu'elle soit de la forme : yyyy-MM-dd

    Je donc fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    File directory = new File(le lien de mon fichier);
    Date date1 = new Date(directory.lastModified());
    SimpleDateFormat  simpleFormat = new SimpleDateFormat("yyyy-MM-dd");
    String date2 = simpleFormat.format(date1);
    Donc jusque la ça va, ma date a bien la bonne forme sauf que c'est plus une Date mais un String

    J'ai donc mis à la suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date date3 = simpleFormat.parse(date2);
    Ca me sort bien une Date mais pas de la forme :yyyy-MM-dd
    Mais plutôt ça : Wed Apr 23 00:00:00 CEST 2008

    J'ai cherché partout (ou presque) mais rien n'y fait.

    Je demande donc votre aide.

    Cordialement.
    BennyBen.

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Le problème c'est que tu veux donner un format à un objet Date et le sauvegarder dans un objet Date, or une Date n'a pas de format une date c'est une date. Si tu veux la sauvegarder dans un format donnée ce n'est pus une date c'est une chaine de caractère.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Le problème justement c'est que récupère une autre date d'une base de données que je place dans un objet Date, et cette date a pour forme yyyy-MM-dd.

    Et moi je veux comparer la date de la base de données avec celle du fichier, mais vu quelles n'ont pas le même format elles ne sont jamais égales.

    A moins qu'il y ait une autre méthode .

    Merci.

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Pour les comparer il faut que tu crée un objet Date pour chacune de tes 2 dates et que tu utilise la méthode equals comme ça tu n'a pas à te soucier du formatage. Si ça ne marche pas montre nous ce que tu as fait.

  5. #5
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Comme le dit guigui5931 une date est une date, et il n'y a pas de notion de forme, quelque soit celle d'origine ou future.

    Il faut donc que tu compares deux dates, et non pas deux formes de dates.

    Normalement, de la base de données, tu reçois un objet java.sql.Date, qui hérite de java.util.Date. Tu peux comparer un java.sql.Date avec un java.util.Date.

    grilled.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    désoler de ne pas avoir répondu mais j'étais partis en weekend.

    Pour guigui5931 :

    Voila mon code pour comparer les deux date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Date_f_s.equals(Date_fichier)) System.out.println("--- Document a jour ---\n");
    Date_f_s = Date provenant de la BDD
    Date_fichier = Je vous laisse deviner ^^

    Pour guigui5931 & gifffftane :

    Vous me dite qu'une date n'a pas de "format", je veux bien et je dis pas le contraire. Mais alors comment ce fait il que lorsque j'affiche mais deux date du dessus (sans aucun reformatage) j'ai :

    Date_f_s = 2008-04-23
    Date_fichier = Wed Apr 23 00:00:00 CEST 2008

    Là je pige plus rien

  7. #7
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    La différence peut venir de la classe de la date (celle provenant de la base est probablement une java.sql.Date contraierement à celle du fichier qui doit être un java.util.Date) mais cela ne devrait pas poser de problème lors de la comparaison. Le problème (à mon avis) est qu'un objet Date c'est un date + une heure minutes seconde donc si dans ta base tu as une simple date (sans heure,...) tous les champs de l'heure minutes et seconde sont mis à 0 alors que pour ton fichier il sont probablement remplis.
    Je sais pas si je suis clair : pour ta date en base tu a surement 21/04/2008 00h00m00s alors que pour ton fichier tu a 21/04/2008 12h45m25s (par exemple) or ces 2 dates ne sont pas égale.
    Je t'invite à regarder la classe Calendar pour remettre les champs d'heure de ta date de fichier à 0.

    En espérant t'aider.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Le problème c'est qu'avec toute mais manip "louche" pour formater ma date j'obtenais comme date :
    Wed Apr 23 00:00:00 CEST 2008
    Et sauf erreur de ma part l'heure est bien a zéro !?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    D'abord pour les formats d'affichage, c'est du aux classes qui sont différentes :
    ton fichier te donne un util.Date affiché par défaut ddd mon dd hh:mm:ss zzz yyyy
    ta bd te donne un sql.Date affiché par défaut yyyy-mm-dd
    Il suffit de regarder les méthodes toString() dans la javadoc ^^.

    Ensuite, l'heure de ton fichier est bien 00h00m00s par contre c'est la date dans ta BD qui doit avoir qq chose comme 12h32m17s.
    Pour le voir tu pourrais te créer un SimpleDateFormat avec heure/min/sec en plus et reformater ta date de ta bd.

    Ton code me semble ok, reste donc à savoir si tu tiens à ce que les dates soient égales à la seconde près ou pas ^^.
    Là il te faudra faire des setHour/setMinute etc ... avant la comparaison par exemple (ou utiliser des Calendar, les méthodes setHour etc... etant deprecated je crois).
    Ou encore, utiliser ton simpleDateFormat sur ta date en BD et comparer les Strings obtenus.

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Je pense avoir trouver mon erreur.

    D'après une définition :
    Une date correspond au nombre de millisecondes écoulées entre le 1-01-1970 minuit et la date à définir
    Donc lorsque sur la date provenant de ma BDD je fais :
    J'obtiens :
    1208901600000 (càd : 2008-04-23 00:00:00:000)
    Or sur le date du fichier même après avoir fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date_fichier.setHours(0);
    Date_fichier.setMinutes(0);
    Date_fichier.setSeconds(0);
    J'obtiens :
    1208901600899 (càd : 2008-04-23 00:00:00:899)
    Autrement dis j'ai 899 millisecondes qui se baladent.
    Il faudrait que je les remettent à zéro or je ne peut pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date_fichier.setMilliseconds(0);
    Car cette méthode n'existe pas.

    Alors comment faire pour les remettre à zéro ??

    Merci

  11. #11
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le type java.sql.Date ne possèdent aucune information concernant l'heure. Elle est donc mise à zéro. Si le champ de ta BD comporte bien des heures tu dois les récupérer via un java.sql.Timestamp...

    a++

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    Ah ben si t'as des millisecondes évidement !

    Va te falloir passer par la classe Calendar du coup, ou alors comparer les Strings formatés des tes deux dates !

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par RegBas Voir le message
    Ah ben si t'as des millisecondes évidement !

    Va te falloir passer par la classe Calendar du coup, ou alors comparer les Strings formatés des tes deux dates !
    Comparer les Strings ne va me dire si une date est supérieur a l'autre (si ?).

    Je vais donc opter pour la classe Calendar, comme m'y avais déjà invité guigui5931.

    Ps : pour info, l'heure je m'en moque totalement, je veux comparer les dates, càd le jour, le moi et l'année.

  14. #14
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Pourquoi n'utilise tu pas Joda-Time pour tes traitements ?

  15. #15
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bennyben77 Voir le message
    Ps : pour info, l'heure je m'en moque totalement, je veux comparer les dates, càd le jour, le moi et l'année.
    Dans ce cas utilises simplement deux java.sql.Date... comme cela tu n'auras pas d'heure du tout

    a++

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    Avec ton format yyyy-mm-dd l'ordre est bien conservé oui.

  17. #17
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Dans ce cas utilises simplement deux java.sql.Date... comme cela tu n'auras pas d'heure du tout

    a++
    J'ai déjà tester et voila ce que ça donne:
    Déjà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import java.sql.Date;
    File directory = new File(directoryPath);//: "+directory +"
    Date Date_fichier= new Date(directory.lastModified());
    System.out.println("date : "+Date_fichier);
    System.out.println("Time Date_fichier : " + Date_fichier.getTime());
    J'obtiens :
    date : 2008-04-23 (parfais)
    Time Date_fichier : 1208963013899 (pas bon car pour ma date de BDD j'ai :Time Date_f : 1208901600000)
    En format "date" j'ai plus d'heure c'est parfais mais en faite elle est toujours la.

  18. #18
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par RegBas Voir le message
    Avec ton format yyyy-mm-dd l'ordre est bien conservé oui.
    Pas compris .
    C'est une question ou une affirmation ?

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 38
    Points : 69
    Points
    69
    Par défaut
    une affirmation

  20. #20
    Membre confirmé Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 505
    Points
    505
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date_fichier.setMilliseconds(0);
    Car cette méthode n'existe pas.
    calendar.set(Calendar.MILLISECOND, 0);

    Le type java.sql.Date ne possèdent aucune information concernant l'heure.
    La méthode toString() ne les affiches pas mais les infos sont bien là me semble-t-il ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/05/2016, 12h26
  2. Récupérer une date d'un fichier ini dans un edit
    Par LuckyLuke56 dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2009, 06h11
  3. Réponses: 1
    Dernier message: 04/03/2008, 00h59
  4. récupérer la date du cliché fichier Jpg
    Par Ricquet dans le forum Delphi
    Réponses: 2
    Dernier message: 08/07/2007, 10h13

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