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

C# Discussion :

Argument Exception sur un DateTime


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut Argument Exception sur un DateTime
    Bonjour,

    Voila mon soucis je lève une exception a cause d'un mauvais formatage quelqu'un a une idée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDebut = DateTime.ParseExact(Infos[2].Substring(0,5)+DateTime.Now.Year.ToString(), "ddMMMyyyy", null);
    Ou Infos[2].Substring(0,5) = "22OCT" par exemple

    Cordialement,

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    La méthode ParseExact va tenter de parser une chaîne par rapport à un format attendu. Si la chaîne n'est pas exactement dans le format attendu, une exception est levée.

    Tu veux un format : ddMMMyyyy
    Tu cherches à parser : 22OCT

    Résultat exception car la chaîne ne correspond pas au format attendu. D'une part OCT ne correspond pas à la représentation d'un mois court en français (Janvier = Jan., Février = Févr., ... Octobre = Oct.) d'autre part il n'y a pas d'année indiquée.

    22Oct.2009 passerait sans problème par contre.

    Sinon tu n'indiques aucune culture, ce qu'il veut mieux éviter à mon avis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.ParseExact("...", "ddMMMyyyy", CultureInfo.CurrentCulture);
    Avec ce code on n'a pas besoin de se poser la question de la valeur par défaut utilisée si on ne précise pas de IFormatProvider.

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut
    Merci pour ta reponse,

    voila la date si tu regardes bien ma chaine il y une année DateTime.Now.Year.ToString() qui est concatené.

    Une question quand meme c'est faut il un point quand on ecrit 'Oct' soit 'Oct.' parce que j'ai essaye en mettant la premiere lettre en majuscule car je m'en suis rendu compte mais ca ne regle pas le pb.

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut
    En rajoutant Donc un '.' a Oct. cela fonctionne.
    Merci a toi!

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    En français il y a un point après le nom court du mois. Par exemple si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(DateTime.Now.ToString("ddMMMyyyy"));
    Tu auras à l'affichage : 25juil.2009

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut
    Bonjour,

    En revoyant ton dernier post cela me fait penser que les dates que je récupère sont en anglais alors pour octobre c'est normal que ça fonctionne..
    Comment précisé que les dates récupérées sont en anglais. C'est la l'intérêt de la CultureInfo?

  7. #7
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Si les dates sont en anglais, le CultureInfo est important oui. Car c'est la culture qui va définir la valeur textuelle du jour, du mois, ... En français et en anglais la représentation n'est pas la même.

    Pour des dates en anglais utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.ParseExact("...", "ddMMMyyyy", CultureInfo.InvariantCulture);

  8. #8
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 54
    Par défaut
    Bonjour,

    C'est ce que je pensais, merci pour la culture je ne savais pas laquelle utiliser.

    Bye

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/12/2005, 10h54
  2. Réponses: 5
    Dernier message: 07/07/2005, 10h20
  3. [vb.net] exception sur monForm.Show
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/07/2005, 12h27
  4. Exception sur Java Web Start
    Par Le Bressan dans le forum JWS
    Réponses: 5
    Dernier message: 01/02/2005, 10h52
  5. [Tomcat] Exception sur JSP
    Par Malaussene dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 10/09/2004, 08h43

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