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 :

Format non autorisée dans TryParseExact ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut Format non autorisée dans TryParseExact ?
    Bonjour à tous, voila j'essayais de vérifier que la date entrée par un utilisateur sous forme de String soit correcte.

    Pour cela j'essaye de parser le String en DateTime selon différents formats qui sont autorisés pour l'utilisateur (via la méthode TryParseExact).

    Voici ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     private Boolean IsDateValide(String date)
    {
         DateTime datetest ;
         string[] formats = { "ddMMyy", "ddMMyyyy", "dMyy", "dMyyyy", "dMMyy", "dMMyyyy", "ddMyy", "ddMyyyy", "dd/MM/yy", "dd/MM/yyyy", "d/M/yy", "d/M/yyyy", "d/MM/yy", "d/MM/yyyy", "dd/M/yy", "dd/M/yyyy" };
     
        if (DateTime.TryParseExact(date, formats, new CultureInfo("fr-FR"), DateTimeStyles.None, out datetest))
                    return true;
     
        return false;
     
    }
    Cependant, certains formats semblent ne pas fonctionner, comme dMyy par exemple. Est ce normal ?
    (Si ca l'est, y'a t'il un moyen de contourner le problème car je souhaiterais que l'utilisateur puisse entrer la date 01/05/2010 sous la forme 1510)

    Merci d'avance !

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par Aeronia Voir le message
    je souhaiterais que l'utilisateur puisse entrer la date 01/05/2010 sous la forme 1510
    Ça me parait difficile : comme tu fais la différence entre le premier novembre et le onze janvier ? (1/11 et 11/1)

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    J'aurais espéré qu'il me prenne la première correspondance de format dans mon tableau de format.

    C'est à dire qu'il aurait pris le premier format qui correspondrait à l'entrée de l'utilisateur ... :/

    Mais bon, si il le faut, je vais forcer, en rajoutant les / dans le cas ou la longueur du String est égale à 4 ou 5.

    1110 -> 1/1/10

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par Aeronia Voir le message
    C'est à dire qu'il aurait pris le premier format qui correspondrait à l'entrée de l'utilisateur ... :/
    Le problème vient pas du fait que tu spécifies plusieurs formats, et que potentiellement plusieurs d'entre eux accepteraient la même chaîne (en l'interprétant différemment, potentiellement).

    Non ce que je dis, c'est que le format dMyy est ambigu. Je reprend mon exemple : 11125, c'est le premier novembre 2025, ou le 11 janvier ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Yep j'ai abandonné l'idée, je fais faire un encodage plus stricte, j'aurais pu interpréter les ambiguïtés mais ca n'aurait pas apporter quelques chose de vraiment intéressant dans l'application.

    Merci quand même !

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/07/2019, 09h42
  2. Réponses: 1
    Dernier message: 04/11/2011, 11h29
  3. Réponses: 3
    Dernier message: 07/06/2006, 13h11
  4. [PaintBox] Persistance du dessin non créé dans onPaint
    Par princesse dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/04/2004, 17h47
  5. [LG]Formater le texte dans un WriteLn
    Par busy999 dans le forum Langage
    Réponses: 16
    Dernier message: 15/11/2003, 11h16

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