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

Langage Java Discussion :

comparer une date (String) à la date d'aujourd'hui


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut comparer une date (String) à la date d'aujourd'hui
    Bonjour à tous et merci pour votre aide futur

    Je suis debutant en java et j'ai un petit probléme qui m'a bloqué.
    J'ai extraire la période de validité d'un certificat à l'aide des commandes openSSL, puis j'ai stocké le résultat dans un fichier texte.
    j'ai obtenu, donc, un fichier texte ( GetDate.txt) qui contient sauf le bloc suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    notBefore=Mar 30 12:29:49 2003 GMTnotAfter=Mar 29 12:29:49 2033 GMT
    Comment je peux comparer la date courant, c'est à dire la date d'aujourd'hui, avec cette période de validité pour détérminer si ce certificat est valide ou non?

    J'espére que je suis claire dans mon explication.
    merci d'avance pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Il faut que tu utilises l'objet SimpleDateFormat et sa méthode parse() qui va te permettre de convertir ton objet chaine en un objet java.util.Date en fonction du pattern (le format de la date dans ta chaine)

    Attention de bien gérer les locales. Ici la date est formatée en langue française. Si tu fais quelque chose de générique, assure toi que la locale ne changera pas.

    Bon code
    Soyons réalistes, exigeons l'impossible !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci pour l'aide apporté,

    Mais j'ai pas compris bien qu'est ce que vous avez dit à partir de :fonction du pattern (le format de la date dans ta chaine) et la suite de votre réponse.

    Et Est ce que la fonction parse() me permet de gerer les format que j'ai eu dans mon fichier (exemple:Mar 30 12:29:49 2003 GMT)?

    J'espere que je suis claire dans mon explication.
    Merci pour vous

  4. #4
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Le principe est d'instancier un SimpleDateFormat(String pattern) .

    Du genre :
    SimpleDateFormat f = new SimpleDateFormat("dd/MM/YYYY")
    parsera la date du jour : 12/03/2009

    Donc si tu prends le pattern qui va bien :
    Mar 29 12:29:49 2033 GMT
    EEE dd HH:mm:ss yyyy (pas sur a verifier et pour le GMT je sais pas)

    et apres tu appelles le parse qui est hérité de DateFormat et qui prend un chaine de caractères en entrée.
    Pourquoi cet avatar ? Parce que j'aime bien le tableau "Le Fils de l'homme" de Magritte.
    Mes contributions sur developpez.com

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Donc, Voila le code que j'ai fait, en fait la compilation est parfaite mais l'execution m'a donné des erreurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
    public class TestDate 
    {
    	public static void main(String[] args) 
    	{
     
    	 try 
    	 {         
             String dte = "Mar 30 12:29:49 2003 GMT";      
             SimpleDateFormat sdf  = new SimpleDateFormat("EEE dd HH:mm:ss yyyy GMT");
             Date pdte = sdf.parse(dte);      
             System.out.println("La coversion String to date:"+pdte);
             	 } 
    	 catch (Exception e) 
    	 {
    		e.printStackTrace();
    	 }
     
     
    	}
     
    }
    Les erreurs aprés execution sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.text.ParseException: Unparseable date: "Mar 30 12:29:49 2003 GMT"
            at java.text.DateFormat.parse(DateFormat.java:324)
            at TestDate.main(TestDate.java:20)
    Press any key to continue...
    J'espere que c'est claire
    Merci

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    c'est z, pas GMT dans la pattern, voir la doc de SimpleDateFormat

    http://java.sun.com/j2se/1.4.2/docs/...ateFormat.html


    EEE d HH:mm:ss yyyy z

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    J'ai executé le programme et j'ai fait les modifications nécessaires c'est à dire le programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
    public class TestDate 
    {
    	public static void main(String[] args) 
    	{
     
    	 try 
    	 {
     
             String dte = "Mar 30 12:29:49 2003 GMT";        
             SimpleDateFormat sdf  = new SimpleDateFormat("EEE d HH:mm:ss yyyy z");
             Date pdte = sdf.parse(dte);        
             System.out.println("La coversion String to date:"+pdte);
         } 
    	 catch (Exception e) 
    	 {
    		 e.printStackTrace();
    	 }
     
     
    	}
     
    }
    Mais le meme message d'erreur que precedemment est affiché

    Merci pour vous.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 119
    Points : 192
    Points
    192
    Par défaut
    Tu as oublié un d je pense.

    EEE dd HH:mm:ss yyyy z

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Non, J'ai pas l'oublier.
    je l'ai mis à partir de ce lien:
    http://java.sun.com/j2se/1.4.2/docs/...ateFormat.html

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Tu va devoir retirer le "Mar " de ta date. Dans la locale française, les nom racourcis de jours doivent se terminer par un point. La date correspondant à ta pattern serait donc:

    Mar. 30 12:29:49 2003 GMT

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci beaucoup pour vous,

    Donc, lorsque j'ai fais les modifications demandés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
    public class TestDate 
    {
    	public static void main(String[] args) 
    	{
     
    	 try 
    	 {
     
             String dte = "Mar. 30 12:29:49 2003 GMT";        
             SimpleDateFormat sdf  = new SimpleDateFormat("EEE dd HH:mm:ss yyyy z");
             Date pdte = sdf.parse(dte);        
             System.out.println("La coversion String to date:"+pdte);
         } 
    	 catch (Exception e) 
    	 {
    		 e.printStackTrace();
    	 }
     
     
    	}
     
    }
    Il m'a donné une résultat, mais avec une modification dans la chaine déja donné dans le variable "dte", voici le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    La coversion String to date:Thu Jan 30 13:29:49 CET 2003
    Press any key tocontinue
    Pourquoi donc il m'a fait cette modification dans la date???????????

    Merci encore.

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    java.util.Date.toString() utilise ce format là, dans la locale par défaut, tout simplement. Si tu veux réafficher la date dans le même format, c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("La coversion String to date:"+sdf.format(pdte));

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci pour vous,

    Le format est le meme mais il reste encore des modifications, les voila:
    C'est le String deja donné dans le variable "dte":Mar. 30 12:29:49 2003 GMT

    et c'est le resultat donné aprés execution du programme:

    jeu. 30 13:29:49 2003 CET

    Merci encore.

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    toutes mes excuse, j'ai confondu dans ta date Mar (march en anglais, mars) et mar. mardi


    ton format est donc


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String dte = "Mar 30 12:29:49 2003 GMT";      
    SimpleDateFormat sdf  = new SimpleDateFormat("MMM dd HH:mm:ss yyyy z", Locale.ENGLISH);
    Pour changer la timezone à l'affichage, il suffit de faire sdf.setTimezone(....)

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci pour vous,
    Et je suis très désolée pour le dérangement, mais j'ais pas compris cette ligne de votre reponse:
    Pour changer la timezone à l'affichage, il suffit de faire sdf.setTimezone(....)
    Et voila le resultat obtenu:
    Mar 30 14:29:49 2003 CEST

    Merci encore.

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    si tu veux afficher en GMT plutot qu'en CEST, la méthode SimpleDateFormat fournit une méthode setTimezone poru te permettre de choisir ton fuseau horaire.

Discussions similaires

  1. [PowerShell] Script qui affiche les dossiers avec une date de modification différente d'aujourd'hui
    Par forcapedro dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 08/05/2014, 10h32
  2. convertir date (String to Date)
    Par mystro7200 dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2008, 15h49
  3. Date la plus proche d'aujourd'hui
    Par santacrus dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/09/2008, 09h52
  4. [Dates] repérer les timestamp d'aujourd'hui
    Par peppena dans le forum Langage
    Réponses: 2
    Dernier message: 05/07/2006, 11h12
  5. Réponses: 5
    Dernier message: 12/04/2006, 09h56

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