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

Windows Forms Discussion :

[Débutant] Parser et réordonner une chaîne de caractères


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut [Débutant] Parser et réordonner une chaîne de caractères
    Bonjour à tous,

    J'ai un petit problème.
    Voilà je recupère une date depuis ma base de données MYSQL et je l'affiche dans un Label :

    5/27/2007 12h00 AM

    C'est donc à ce moment là une chaîne de caractères.

    Or, j'ai besoin de réinjecter cette date dans ma base de données, mais cette fois-ci sous la forme :

    2007-05-27

    J'étais partis sur des solution de conversion de format en précisant les differentes culture etc ... mais après reflexion je pense que le plus simple serait de parser la 1ere chaine de caractère afin d'obtenir le model de la seconde.

    Etant débutant je bloque un peu, aussi toute aide serait la bienvenue.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    DateTime.ToString("yyyy-MM-dd")

  3. #3
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Si tu as l'objet DateTime correspondant à la date, le ToString est la solution. Mais comme tu parles de parsing, je suppose que ca ne doit pas être le cas. Je vois deux possibilités

    1. Tu traites la chaîne de caractères à la barbare avec la méthode Split. Ca fonctionne mais ce n'est pas très propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    string dateStr = "5/27/2007 12h00 AM";
    // On découpe la partie concernant la date
    string[] tabDate = dateStr.Split(' ')[0].Split('/');
    // On ajoute les zéros nécessaires
    for(int i = 0; i < tabDate.Length; i++)
    {
        if (tabDate[i].Length == 1) { tabDate[i] = '0' + tabDate[i]; }
    }
    // On formate la nouvelle chaîne
    string newDate = String.Format("{0}-{1}-{2}", tabDate[2], tabDate[0], tabDate[1]);
    2. Tu utilises la méthode DateTime.ParseExact pour avoir l'objet DateTime et ensuite tu utilises la méthode ToString comme indiqué par zeavan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string dateStr = "5/27/2007 12h00 AM";
    // On récupère l'objet DateTime correspondant
    DateTime date = DateTime.ParseExact(dateStr, @"M/d/yyyy h\hmm tt", new System.Globalization.CultureInfo("en-us"));
    // On formate la nouvelle chaîne
    string newDate = date.ToString("yyyy-MM-dd");

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2002
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 104
    Points : 128
    Points
    128
    Par défaut


    le connecteur MySQL doit te permettre de récupérer un datetime puisque c'est ce qui est stocké en base ...

    de plus la visualisation de cette donnée se faisant dans un label, elle n'est pas modifiée par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monLabel.Text = maDate.ToShortDateString() + " " +maDate.ToLongTimeString()
    Il ne reste plus qu'à utiliser "maDate" dans un mySqlParameter

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Bonjour à tous !

    Tout d'abord merci de vos réponse

    Ayant été coupé du net quelques jours, j'ai du improviser une solution avant de voir vos réponses.

    Elle doit être horrible face à des yeux confirmés mais en tant que débutant elle m'a permis de continuer mon appli ^^


    voila ce que j'ai fait :

    label20.Text = "5/27/2007 12h00 AM"

    int longueur = label20.Text.Length;
    int val1 = label20.Text.IndexOf("/");
    string mois = label20.Text.Substring(0, val1);
    ++val1;
    string temp = label20.Text.Substring(val1, 7);
    int val2 = temp.IndexOf("/");
    string jour = temp.Substring(0, val2);
    ++val2;
    string annee = temp.Substring(val2, 4);

    label79.Text = annee + "-" + mois + "-" + jour;

    J'obtiens bien ma nouvelle date comme suit : 2007-05-27

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux aussi utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DateTime monDateTime = DateTime.ParseExact("5/27/2007 12h00 AM", "M/dd/yyyy hh:mm tt");
    String maDate = monDateTime.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
    Il faudra juste vérifier le format de parsing.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup

    C'est effectivement un peu plus propre que ce que j'ai fait ^^

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

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 13h44
  2. Réponses: 4
    Dernier message: 27/09/2011, 22h27
  3. Réponses: 2
    Dernier message: 08/12/2008, 21h31
  4. Tester une chaîne de caractères vide (débutant)
    Par Virtual78 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2007, 16h11
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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