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 :

Convertir une Date US (Texte) en FR


Sujet :

VB.NET

  1. #1
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut Convertir une Date US (Texte) en FR
    Bonjour a tous

    Y a t'il un moyen efficace de mettre cette date en version Française ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fri Jul 11 12:41:16.018 2008 Romance Daylight Time
    J'ai regardé dans le MSDN rien ne permet de faire cette conversion a moin que j'ai mal recherché.

    Sinon j'ai fait un Split(" ") (sur les espaces) pour recuperer le jour le mois l'heure et l'année mais rien me permet de le convertir directement
    j'ai vu aussi qu'il y avais CultureInfo mais c'est chaud et pas assez experimanté pour faire joujou avec cette class

    Avez vous une idée ?

    A bientot
    et merci de votre aide


    PS. j'utilise VB 2008 (Application Windows Form)

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    En C# ça donne un truc genre ça :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    string date_string = "Fri Jul 11 12:41:16.018 2008 Romance Daylight Time";
                IFormatProvider us_format = System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat;
     
                /* On a pas besoin des 3 derniers */
                for (int i = 0; i < 3; i++)
                {
                    date_string = date_string.Substring(0, date_string.LastIndexOf(' '));
                }
                /* On a pas besoin du premier*/
                date_string = date_string.Substring(date_string.IndexOf(' ') + 1);
     
                DateTime us_date = DateTime.ParseExact(date_string,
                    "MMM d H:m:s.fff yyyy", us_format);
     
                MessageBox.Show(us_date.ToString("dddd d MMMM yyyy H:m:s.fff"));
    Facile à convertir en VB.NET (moi je ne l'aime pas ce langage )
    Sinon pour savoir ce à quoi correspondent les lettres tu as ceci.

  3. #3
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    smyley,

    Tout a bort merci beaucoup, cela m'évitera a faire du code qui risquerais a être pas propre du tout !

    J'ai eu un tout petit peux eu du mal a retraduire ton code en C# car j'ai pas trop l'habitude a le lire, ce fut un très bonne exercice quand meme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Dim MaDate = "Fri Jul 11 12:41:16.018 2008 Romance Daylight Time"
            Dim FormatUS As IFormatProvider = CultureInfo.GetCultureInfo("en-US").DateTimeFormat
            MaDate = MaDate.Substring(MaDate.IndexOf(" ") + 1, MaDate.Count - (MaDate.IndexOf(" ") + 1))
            For i As Integer = 0 To 2
                MaDate = MaDate.Substring(0, MaDate.LastIndexOf(" "))
            Next
            Dim DateUS As DateTime = DateTime.ParseExact(MaDate, "MMM d H:m:s.fff yyyy", FormatUS)
     
            MessageBox.Show(DateUS.ToString("dddd d MMMM yyyy H:m:s.fff"))
    Merci encore de ton efficacité très agréable
    A bientôt

    Cordialement
    Troxsa

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    La prochaine fois n'oublie pas le

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 122
    Points
    122
    Par défaut
    Oui, sauf que dans cette conversion la timezone est perdue...

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par realpasso Voir le message
    Oui, sauf que dans cette conversion la timezone est perdue...
    Et ouai, j'ai oublié
    En fait, soit la date qu'on a à convertir est toujours une date US et alors on peut recréer le TimeZone à la main si c'est tout le temps 'Romance Daylight', soit il y a un problème, car toute les méthodes que j'ai trouvé pour parser un TimeZone à partir d'une string semblent reposer sur la langue du système.
    Donc voilà ... faut voir ...

  7. #7
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Le TimeZone ? quessésso ! le décalage horaire entre la France est les USA par exemple non ?

    smyley Tu parle de --> Romance Daylight Time
    j'ai recherché sur Internet et j'ai pas trouvé grand chose, cela correspond a quoi exactement ?

    Je pensais que c'était un type sur l'organisation des dates genre jour-mois ou mois-jour ext ext ... mais en faite je sais pas du tout a quoi correspond "Romance Daylight Time" si tu as des liens qui explique tout ça je suis preneur sinon une simple explication devrais suffir aussi ...

    Dans le code je pense pas qu'il y a besoin de TimeZone, c'est une date qui ce trouve dans les logs SCCM 2007 (US) sur une machine Serveur 2003(US) mais avec les horaires reste Française, car la machine est regle dessus.

    Merci encore

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 122
    Points
    122
    Par défaut
    Imagine qu'un événement quelconque survienne à "Fri Jul 11 12:41:16.018 2008 Romance Daylight Time" et que tu aies à le dire à quelqu'un habitant aux US. Si tu lui dis "C'est arrivé le 'Fri Jul 11 12:41:16.018 2008'" tu donnes une info incomplète car pour ton interlocuteur ça ne correspond pas au même instant que toi.

    Pour résoudre ce problème tu as 2 solutions courantes :
    1. exprimer ton horodate en précisant la timezone ""C'est arrivé le 'Fri Jul 11 12:41:16.018 2008 Romance Daylight Time'"

    1. Appliquer la timezone pour ne garder que des horodatages en UTC sans décalage : "C'est arrivé le 'Fri Jul 11 10:41:16.018 2008 GMT Standard Time'" .


    Ta BDD ne stocke pas les dates sous forme de chaîne, mais sous la forme d'une valeur numérique (que tu formates ensuite pour l'afficher). Si tu insères 'Fri Jul 11 12:41:16.018 2008', tu insères une donnée fausse parce que sans timezone.

    Voilà, j'espère que c'est clair.

    Pascal

  9. #9
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Oui, j'ai compris je pense pour moi ça s'appelle simplement un fuseau horaire
    Romance Daylight Time
    GMT Standard Time

    Mais quelle par cela n'explique pas que le système 2003 serveur renvoi une heure GMT (il me semble, a vérifié quand même) et que ça me le met a Romance Daylight Time, avant d'intégrer le code que tu m'as fait faut que je vérifie bien qu'il ne change pas les mois avec le jour en première position !

    Merci beaucoup pour les precisions que tu m'as donnée !

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

Discussions similaires

  1. [XL-2007] Convertir une date en texte
    Par BARMAKI dans le forum Excel
    Réponses: 6
    Dernier message: 19/12/2018, 12h27
  2. Convertir une date format texte en format date
    Par arni63 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 19/03/2012, 15h34
  3. [AC-2007] Problème convertir une date en texte
    Par christophe31 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/04/2010, 14h51
  4. [Requête]Convertir une chaine de texte en format date
    Par emjie dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/04/2007, 00h44
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 10h52

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