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

VB.NET Discussion :

Convertion en date [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut Convertion en date
    Bonjour

    J'aimerai convertir 20110811 en une date valide => 11/08/2011

    j'ai fais ce code qui marche mais que je ne trouve pas très beau, et qui doit surtout être très lent. De plus il est dans une grosse boucle.
    Avez vous une meilleure façon de faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim StrBonneDate As String = "/" & Strings.Left("20110824", 4)
                    StrBonneDate = "/" & Strings.Mid("20110824", 5, 2) & StrBonneDate
                    StrBonneDate = Strings.Right("20110824", 2) & StrBonneDate
                    Dim BonneDate As Date = Date.Parse(StrBonneDate)
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je ne pense pas que ce soit très lent, mais effectivement ce n'est pas optimal, et surtout ce n'est pas la façon la plus simple...

    DateTime.Parse ne gère qu'un seul format de date, mais il y a aussi DateTime.ParseExact, où tu peux préciser le format de la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim BonneDate As Date = Date.ParseExact("20110824", "yyyyMMdd", Nothing)
    yyyy = la date sur 4 chiffres
    MM = le mois sur 2 chiffres
    dd = le jour sur 2 chiffres

    Voir ici pour plus de détails :
    http://msdn.microsoft.com/fr-fr/library/8kb3ddd4.aspx

  3. #3
    Membre confirmé
    Femme Profil pro
    futur développeur
    Inscrit en
    Janvier 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Maroc

    Informations professionnelles :
    Activité : futur développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 135
    Par défaut
    salut

    essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cdate(jour & "/" & mois & "/" & annee)
    avec jour,mois,annee sont des Integer.


    mais je ne comprends pas bien ce que vous voulez faire?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    Merci de vos réponses à tous les deux

    tomlev
    C'est exactement ce que je cherchais, j'ai tourné un moment autour de cette instruction sans réussir

    wikiele
    CDate ne me convient pas car vu la mise en forme de depart que j'ai il ne l'accepte pas, et on revient a peu de choses prés a ce que j'ai fais.

    mon but est d'envoyer cette date dans un champ de table access, elle doit donc être formaté correctement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    finalement j'ai toujours un soucis.

    le jour et le mois sont a l'envers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim BonneDate As Date = Date.ParseExact("20110811", "yyyyMMdd", CultureInfo.InstalledUICulture)
    me renvoie comme date 08 11 2011 au lieu de 11 08 2011 pourtant la culture de mon ordi est bien sous forme dd MM yyyy

    Auriez vous une idée du problème?
    Merci

    edit: J'ai rajouté ca pour que cela fonctionne mais je pense qu'il doit il y avoir mieux, je trouve que cela fait un peu bricole !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim StrBonneDate As String = BonneDate.ToString("dd/MM/yyyy")

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par gilles_906 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim BonneDate As Date = Date.ParseExact("20110811", "yyyyMMdd", CultureInfo.InstalledUICulture)
    me renvoie comme date 08 11 2011 au lieu de 11 08 2011 pourtant la culture de mon ordi est bien sous forme dd MM yyyy
    Euh... pas chez moi ! Tu es sûr que tes options régionales sont correctes ?
    Par contre d'habitude on utilise pas InstalledUICulture, mais CurrentCulture (ou Nothing, ça revient au même)

    Mais de toutes façons, c'est juste la représentation sous forme de chaine qui est fausse, la date elle-même est forcément correcte avec ce code. Tu peux vérifier les propriétés Day/Month/Year si tu as un doute.

    Et si tu veux utiliser cette date pour l'insérer dans une base de données, tu ne devrais pas passer par une chaine, mais par des requêtes paramétrées. Ca évitera ce genre de problème de format. Regarde cet article pour plus de détails (c'est du C#, mais le principe est le même en VB)
    http://johannblais.developpez.com/tu...s-donnees/#LIV

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 277
    Par défaut
    merci de ta reponse

    ben chez moi si (windows seven 64bits) et j'ai vérifié mes parametres regionaux.

    Effectivement ma date passe dans une requete, de plus si je veux qu'elle soit correctement interprétée il faut qu'elle soit au format anglais, donc finalement c'est plutot pas mal

    Le pire c'est qu'en envoyant la date sous forme de date (format anglais) j'ai a l'arrivée dans la base access des dates a l'endroit et d'autre a l'envers, sans vraiment de logique.

    Du coup je transforme en string ma date (format anglais) puis je l'a met dans ma requete entouré de # et plus de problemes.

    Voila ce que donne ma requete j'avais simplifié pour poser ma question sur le forum mais elle est parametrée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    'je transforme en date format anglais 
                    BonneDate = Date.ParseExact(DataTableOperation.Rows(i).Item(3), "yyyyMMdd", Nothing)
                    StrBonneDate = BonneDate.ToString("MM/dd/yyyy") 'transforme en string
     
                    requete = DataTableOperation.Rows(i).Item(1) & ", """ & DataTableOperation.Rows(i).Item(2) & """, " & "#" & StrBonneDate & "#" & ", " & DataTableOperation.Rows(i).Item(4) & ", " & DataTableOperation.Rows(i).Item(5) & ", " & Chr(34) & DataTableOperation.Rows(i).Item(6) & Chr(34) & ", " & Chr(34) & DataTableOperation.Rows(i).Item(7) & Chr(34)
                    MyCommand.CommandText = "insert into " & TableAMettreAJour & ChampsDestination & " Values (" & requete & ")"

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

Discussions similaires

  1. Convertion de Date
    Par Oberown dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/05/2006, 17h39
  2. Convertion Format Date
    Par Portekoi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/03/2006, 19h43
  3. [Conception] Convertion de date de FR=>BDD et de BDD=> FR
    Par reman dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/03/2006, 19h49
  4. Convertion de date
    Par cramidou dans le forum Linux
    Réponses: 1
    Dernier message: 29/11/2005, 17h01
  5. Convertion des dates SQL Server
    Par sdelaunay dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/08/2005, 09h22

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