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

Framework .NET Discussion :

Problème de conversion de date en C#


Sujet :

Framework .NET

  1. #1
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut Problème de conversion de date en C#
    Bonjour,

    J'ai un problème de conversion de date en C# (enfin le langage importe peu, je pense que c'est le framework qui a un problème) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR");
    DateTime s = DateTime.Parse("13/11/1984", culture); // PositionDate
    Console.WriteLine("String : "+PositionDate);
    Console.WriteLine("Date : "+s);
    Il me renvoie une exception (System.FormatException) en essayant de "parser" la chaîne. Si j'inverse 13 et 11 (format américain : 11/13/1984 - MM/DD/YYYY) il me dit OK. Or normalement, je lui spécifie bien que je suis en format français (DD/MM/YYYY) grâce au paramètre "culture" qui récupère les informations culturelles pour le code fr-FR.

    Quel est le problème ? Y'a-t-il des configurations globales du Framework (2.0) qui remplace le paramètre ? Tous les formats ne sont-ils pas installés ? Comment voir ça ?

    Merci d'avance.

    PS : en installant IE7 version FR, sur mon windows XP FR, il me déclare que "cette installation ne prend pas en compte le langage de votre système" alors qu'avec la version IE7 version UK (toujours sur mon windows FR) il ne me dit rien et s'installe proprement en anglais. Les deux sont-ils liés où je suis à côté du problème ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Curieux, d'après la doc, ton code semble ok: http://msdn2.microsoft.com/en-us/library/kc8s65zs.aspx

  3. #3
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut
    Merci pour ta réponse, c'est bien ce qu'il me semblait hélas. J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    culture = CultureInfor("fr-FR", true)
    Sans plus de résultats. Et quand je débug "culture", il y a un champ "Calendar" et dans celui-ci un champ "MaxSupportedDateTime" qui est à 12/31/9999 (à quand le bug de l'an 10000 ?) or en français, cela devrait être 31/12/9999. Y'a-t-il un moyen de configurer le framework .Net ? Mon installation est-elle corrompue / buggée ? Ma version est la ".Net Framework v 2.0.50727". J'imagine que je dois être rare dans mon cas sinon on en aurait parlé plus tôt...
    Y'a-t-il une version "internationale" et une autre non internationale du .Net framework qui n'aurait pas les différentes cultures ?
    (peut-être est-ce lié à la config Windows, mais celle-ci est "semble" à FR).

    PS: je copie-colle le code de la doc Microsoft, il me plante au nez, même erreur...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 231
    Points : 165
    Points
    165
    Par défaut
    Question bête, mais dans tes paramètres régionaux Windows, as tu le bon format de date définit pour "France" ?

  5. #5
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut
    Bien joué ! Effectivement j'avais pas regardé dans le détail les paramètres régionaux (j'avais vu France/Français, je m'étais pas méfié du contenu des paramètres) et la date au format courte était ainsi : M/j/A... Hum, c'est pas moi qui avais configuré ce PC, mais quand même c'est assez vicieux.
    Encore merci !
    PS : ce qui est assez dingue, c'est que le format local a donc redéfini le format du .Net framework... (en fait il a dû voir que mon Windows était en FR, et a préféré donc prendre la définition locale du format FR plutôt que celle qu'il avait... parfois l'intégration trop poussé ça peux poser problème : vous vous imaginez si chacun s'amuse à reconfigurer ses paramètres régionaux ????).

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 231
    Points : 165
    Points
    165
    Par défaut
    Ca ne me choque pas, je pense que pour le framework se base sur tes paramétres régionaux pour connaitre tes préférences

  7. #7
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut
    Oui c'est sympa.... Quand tu développes pour toi même tranquillement. Mais imagine que, après avoir corrigé mon problème [j'ai J/M/A en culture FR], je livre l'application à mon amie Caroline, avec des fichiers textes contenant des dates aux formats J/M/A alors qu'elle (ayant un petit ami américain) a reglé son Windows sur des M/J/A toujours en culture FR : pof ! Exception en lançant l'application alors que chez moi "elle tourne parfaitement". Dangereux quand même, non ?

    Le code "sûr" consisterait à détecter le champ culture.Calendar.MaxSupportedDate pour voir si on est en 12/31/9999 ou 31/12/9999 sans se fier à la culture en donnant dans le fichier des dates le format d'écriture de celles-ci, mais là ça devient un peu gruik.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 231
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par Xitog Voir le message
    Oui c'est sympa.... Quand tu développes pour toi même tranquillement. Mais imagine que, après avoir corrigé mon problème [j'ai J/M/A en culture FR], je livre l'application à mon amie Caroline, avec des fichiers textes contenant des dates aux formats J/M/A alors qu'elle (ayant un petit ami américain) a reglé son Windows sur des M/J/A toujours en culture FR : pof ! Exception en lançant l'application alors que chez moi "elle tourne parfaitement". Dangereux quand même, non ?

    Le code "sûr" consisterait à détecter le champ culture.Calendar.MaxSupportedDate pour voir si on est en 12/31/9999 ou 31/12/9999 sans se fier à la culture, mais là ça devient un peu gruik.

    Je n'ai jamais travaillé avec ces histoires de cultures mais il me semble que tu peux récupérer la "culture" du poste client non ?
    Et puis "normalement" il n'y a pas de raison de toucher à ces paramétres

  9. #9
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 183
    Points
    183
    Par défaut
    Ouais, tu dois pouvoir faire ça bien sûr. Et c'est sûr que les gens qui change le format des dates tout en laissant FR en paramètre régional dans windows, c'est vraiment des tordus (moi, c'était à l'insu de mon plein gré).

    Mais bon le cas c'est posé, alors soit j'ai vraiment pas de chance, soit le cas pourra se reposer un jour. Je vais me faire une petite note mentale là-dessus, c'est le genre truc à conserver si on rencontre encore cette exception.

    Aussi pour faire chier un ami [à les cours en binôme, nostalgie ], après enlever la boule de la souris (de toutes façons elles sont toutes optiques maintenant) un peu de paramétrage sympa des paramètres régionaux (style A/J/M) peut avoir le même effet ...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 231
    Points : 165
    Points
    165
    Par défaut

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

Discussions similaires

  1. probléme de conversion de date
    Par vanesa dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/01/2009, 15h03
  2. problème de conversion de date
    Par thaundeadboss dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/06/2008, 07h07
  3. Problème de conversion de date
    Par loulou dans le forum Langage
    Réponses: 1
    Dernier message: 29/08/2007, 15h18
  4. [T-SQL] Problème de conversions de dates
    Par kooljy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2006, 14h19
  5. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31

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