IsDate et format de date [Résolu]

Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 13:16 - Dernière réponse : Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention
- 27 nov. 2009 à 17:41
Bonjour,

Je sait que cette question à déjà été posé pas mal de fois mais je ne trouve pas de réponse qui pourrais me convenir (je commence même à me demander si ce que je cherche est possible )

Mon objectif est de lire des données dans un fichier quelque soit leur format.

Pour cela j'utilise la classe "System.Globalization.CultureInfo"

Extrais de mon code :
Private CurentCultureInfo As System.Globalization.CultureInfo

    Public Sub New()
        CurentCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture.Clone
    End Sub

    Private Sub TextBoxFormatDate_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBoxFormatDate.Validating
        Try
            CurentCultureInfo.DateTimeFormat.ShortDatePattern = TextBoxFormatDate.Text
            System.Threading.Thread.CurrentThread.CurrentCulture = CurentCultureInfo
        Catch ex As Exception
            e.Cancel = True
        End Try
    End Sub



Problème je dois pouvoir supporté TOUT format de date, "yyyyMMdd" y compris (mais aussi tout les autres, personnalisés ou par défaut). Sauf que avec ce format justement ("yyyyMMdd") la fonction IsDate ne fonctionne pas. De plus prévoir un "select case" de tout les format est quasiment inimaginable vue le nombre de possibilité .

Quelqu'un aurais une solution pour que IsDate("20091127") me retourne Vrais (si le format est bien défini correctement évidemment) ?

Merci par avance

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 15:05
3
Merci
Bon bà j'ai une solution (qui ne me conviens pas forcément à 100% mais déjà je vais pouvoir bossé)
Je vais lire mes données (qui sont dans des fichiers formaté ou avec séparateur) avec Ms.Jet et j'ajoute une colonne dans mon tableau de définition de type
Tiens du coup je vous le montre (sa donneras peut être des idées à d'autre )


Private Sub TextBoxFormatDate_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBoxFormatDate.Validating
        Dim TempCultureInfo As System.Globalization.CultureInfo
        TempCultureInfo = CurentCultureInfo.Clone
        TempCultureInfo.DateTimeFormat.ShortDatePattern = TextBoxFormatDate.Text
        System.Threading.Thread.CurrentThread.CurrentCulture = TempCultureInfo
        Try
            If Not IsDate(Format(Now, TextBoxFormatDate.Text)) Then
                MsgBox("Ce format n'est pas valide pour une détéction automatique des dates." & vbCrLf & "Utilisez ce format avec un formatage de date spécifique.")
                TextBoxFormatDate.Text = CurentCultureInfo.DateTimeFormat.ShortDatePattern
            End If
            CurentCultureInfo.DateTimeFormat.ShortDatePattern = TextBoxFormatDate.Text
        Catch ex As Exception
            e.Cancel = True
        End Try
    End Sub


PS :
Il y à peut être (sans doute ) des fautes d'orth un peut partout je n'est pas encore pris le temps de les corrigées.

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo

Merci Polack77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Polack77
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 27 nov. 2009 à 13:36
0
Merci
Bonjour,

je ne connais rien à VB.Net

Transforme cici (en VB6) pour VB.Net

Format est ta réponse :

MsgBox IsDate(Format("20090229", "#### ## ##"))
devrait retourner False puisque le 29/02/2009 n'existe pas ...
Commenter la réponse de jmf0
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 nov. 2009 à 13:54
0
Merci
20091127 n'est pas une date...

2009-11-27 oui
27.11.2009 aussi, selon les regional settings
etc.

après, on enregistre dans un format internationnal, toujours.

on ne formatte en utilisant le format de date du poste que si c'est pour imprimer la date, ou l'afficher pour un user.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 14:43
0
Merci
Donc ce genre de format n'est pas utilisable avec le dot.net
Pourtant Ms.Jet gère sans problème ce genre de format, il suffi de la définir dans le "schema.ini" (au niveau de la colonne il me semble que dans la ligne de définition de format de date générale "DateFormat=yyyyMMdd" sa ne fonctionne pas soit une ligne "ColN=Date (yyyyMMdd)") et j'ai déjà été amené à lire/écrire des données formatées de cette façon (même si ce n'est pas vraiment un formatage valide sa suis d'accord)

Bon bà je continue à cherché une solution car je DOIS être compatible à ce genre de format (quand j'aurais trouvé une solution je la posterais ici )

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 nov. 2009 à 14:58
0
Merci
si tu as des données sous cette forme, reconnus en tant que date, suffit de reformater, sans trop de peine

mais viens pas dire que tu souhaites lire tous les formats de dates, certains s'excluent :

02/07/2007 -> 7 Fevrier ou 2 Juillet ?




Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 nov. 2009 à 15:56
0
Merci
"monaitaire"
"premiére"


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 16:03
0
Merci
Il y à aussi :
"Sépareteur"
Enfin ce n'étais pas pour qu'on me corige que j'ai posté cette écran (qui est encore en cours de dévelopement en +)

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 16:24
0
Merci
Oups j'ai oublier de répondre à une de tes remarque :

mais viens pas dire que tu souhaites lire tous les formats de dates, certains s'excluent :
02/07/2007 -> 7 Fevrier ou 2 Juillet ?

C'est justement pour ce genre de problème que je demande quel est le formatage des dates (et des autres données)
Format "dd/MM/yyyy" -> 2 Juillet
Format "MM/dd/yyyy" -> 7 Fevrier
Je détecte le type des colonne en fonction des formats qu'on me fournis pas le contraire. (Par exemple si le séparateur de décimal est "," alors la valeur "1.1" sera détecté en texte et non en numérique, ce, en tout cas pour le moment, dans tout le fichier)

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 nov. 2009 à 16:31
0
Merci
ca ne change pas que pour le stockage et le transfert de données, on lève toute ambiguité :

21.5
2009-11-27


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 16:49
0
Merci
Je ne comprend pas ce que tu veut dire par là
(Format standard US ? Oui sa serais mieux qu'on me fournisse ce genre de données mais mon application est justement là pour faire sa . Format spécifique de fichier -> format standard en BdD)

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 nov. 2009 à 16:55
0
Merci
http://blogs.codes-sources.com/renfield/archive/2009/04/14/param-tres-r-gionnaux-en-g-n-ral-et-avec-vb6.aspx


l'utilisation des parametres regionnaux, au final, ne servent qu'a :

- formater les données en vue de l'affichage ou de l'impression
- transcrire les données saisies par l'utilisateur en single, date...


TOUT le reste s'effectue en format internationnalement reconnu, quelques soient les regional settings (cf blog)



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 27 nov. 2009 à 17:41
0
Merci
Ok...
Je comprend ce que tu veut dire
Et un grand OUI
il faut STANDARDISER
les données contenu dans tous les fichiers. Et surtout ne JAMAIS
modifier les paramètres régionaux de win. (Pour info je sauvegarde les CultureInfo au "New" de mon form et les remet au "Finalize" histoire de ne pas avoir d'affichage zarb par la suite, même si c'est vrais que je n'est pas posté ces lignes de code dans mes messages, et que je devrais sans doute plutôt le faire au début et à la fin de ma fonction de teste, chose que je fait même tout de suite )
5 min plus tard :
Sauf que dans le cas précis de cette application je récup des fichiers de clients (et non des fichiers éditer en interne) et comme le dit le blog quel "méli-mélo pour mettre tout le monde d'accord". Du coup je doit pouvoir extraire des données de ce méli-mélo, les formatées convenablement, pour finalement les faire entrées dans une BdD qui sera exploitée par un autre logiciel.
Je me voie mal dire à mes client (qui ne comprenne parfois rien à leur propre données) "Non je ne veut pas de vos fichiers, formatez les convenablement pour commencer". Je vais faire perdre pas mal de sous à mon parton, et sa il ne vas pas aimé, mais alors pas du tout .

Donc en résumé je suis totalement avec toi pour avoir ce discours mais je ne peut pas forcé mes clients à faire des choses correct (même si j'aimerais bien, sa me simplifierais sacrément la vie).

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.