none
Convertir un date en texte RRS feed

  • Question

  • Bonjour,

    Je souhaite transformer ou convertir  un Date en texte   :  Textbox.text = "01/02/1993"

    par exemple : Textbox2 résultat : Le Un Février Mille Neuf Cent Quatre Vingt Treize.

    Merci

    vendredi 21 septembre 2012 18:27

Réponses

  • Je pensais de cette façon, mais ce n'est pas professionnel !!
     Dim jour, mois, annee As String
    
            Dim dt As Date = TextBox1.Text
    
            'Déterminer le jour
            If dt.Day = 1 Then
                jour = "un"
            End If
            If dt.Day = 2 Then
                jour = "deux"
            End If
            If dt.Day = 3 Then
                jour = "trois"
            End If
            If dt.Day = 4 Then
                jour = "quatre"
            End If
            '...... 31
    
    
            'Déterminer le mois
            If dt.Month = 1 Then
                mois = "janvier"
            End If
            If dt.Month = 2 Then
                mois = "fevrier"
            End If
            If dt.Month = 3 Then
                mois = "mars"
            End If
            If dt.Month = 4 Then
                mois = "avril"
            End If
            '.... décembre
    
    
            If dt.Year = 1000 Then
                annee = "mille"
            End If
            If dt.Year = 2000 Then
                annee = "deux mille"
            End If
            If dt.Year = 3000 Then
                annee = "trois mille"
            End If
            If dt.Year = 2010 Then
                annee = "deux mille dix"
            End If
            '...!!!
    
    
    
            TextBox2.Text = jour & " " & mois & " " & annee
    

    • Marqué comme réponse HappySaid lundi 24 septembre 2012 13:31
    vendredi 21 septembre 2012 20:51

Toutes les réponses

  • Bonjour,

    Ceci n'est pas automatique. Vous devez faire une fonction pour convertir les nombres. Pour les jours, vous pouvez faire un mapping via un tableau de 30 valeurs.

    Exemple :

    dim jour as string() = new string(){"Premier", "deux"} 'alimenter jusqu'à 31.

    Ensuite pour les mois, utiliser :

    System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(<numéro mois>)

    Pour les années voici un lien d'algorithme d'exemple (VBA donc convertir en .net) :

    http://www.commentcamarche.net/faq/11100-vb6-net-vba-transformer-chiffres-en-lettre

    Est-ce que c'est ce que vous souhaitiez ?



    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    vendredi 21 septembre 2012 19:54
  • Je pensais de cette façon, mais ce n'est pas professionnel !!
     Dim jour, mois, annee As String
    
            Dim dt As Date = TextBox1.Text
    
            'Déterminer le jour
            If dt.Day = 1 Then
                jour = "un"
            End If
            If dt.Day = 2 Then
                jour = "deux"
            End If
            If dt.Day = 3 Then
                jour = "trois"
            End If
            If dt.Day = 4 Then
                jour = "quatre"
            End If
            '...... 31
    
    
            'Déterminer le mois
            If dt.Month = 1 Then
                mois = "janvier"
            End If
            If dt.Month = 2 Then
                mois = "fevrier"
            End If
            If dt.Month = 3 Then
                mois = "mars"
            End If
            If dt.Month = 4 Then
                mois = "avril"
            End If
            '.... décembre
    
    
            If dt.Year = 1000 Then
                annee = "mille"
            End If
            If dt.Year = 2000 Then
                annee = "deux mille"
            End If
            If dt.Year = 3000 Then
                annee = "trois mille"
            End If
            If dt.Year = 2010 Then
                annee = "deux mille dix"
            End If
            '...!!!
    
    
    
            TextBox2.Text = jour & " " & mois & " " & annee
    

    • Marqué comme réponse HappySaid lundi 24 septembre 2012 13:31
    vendredi 21 septembre 2012 20:51
  • Je pensais de cette façon, mais ce n'est pas professionnel !!
     Dim jour, mois, annee As String
    
            Dim dt As Date = TextBox1.Text
    
            'Déterminer le jour
            If dt.Day = 1 Then
                jour = "un"
            End If
            If dt.Day = 2 Then
                jour = "deux"
            End If
            If dt.Day = 3 Then
                jour = "trois"
            End If
            If dt.Day = 4 Then
                jour = "quatre"
            End If
            '...... 31
    
    
            'Déterminer le mois
            If dt.Month = 1 Then
                mois = "janvier"
            End If
            If dt.Month = 2 Then
                mois = "fevrier"
            End If
            If dt.Month = 3 Then
                mois = "mars"
            End If
            If dt.Month = 4 Then
                mois = "avril"
            End If
            '.... décembre
    
    
            If dt.Year = 1000 Then
                annee = "mille"
            End If
            If dt.Year = 2000 Then
                annee = "deux mille"
            End If
            If dt.Year = 3000 Then
                annee = "trois mille"
            End If
            If dt.Year = 2010 Then
                annee = "deux mille dix"
            End If
            '...!!!
    
    
    
            TextBox2.Text = jour & " " & mois & " " & annee

    Essayez de minimiser les traitements. Si des fonctionnalités existent, quel est l'intérêt de les recréer ? La méthode que je vous fournie est la plus simple. A l'utilisation des jours il n'y aura qu'a faire jour(j-1) Exemple : getJour(25-1) ---> vingt-cinq. 25-1 car on commence à l'index 0.

    Ensuite vous pouvez utiliser le code fournit en lien.


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    vendredi 21 septembre 2012 22:00
  • Je pensais de cette façon, mais ce n'est pas professionnel !!

    'Déterminer le jour If dt.Day = 1 Then jour = "un" End If If dt.Day = 2 Then jour = "deux" End If

    TextBox2.Text = jour & " " & mois & " " & annee

    Bonjour Happy Saïd,

    Oui, le principe c'est ça, sauf que manifestement ça existe déjà...

    select case dt.Day
      case 1 : j = "un"
      case 2 : j = "deux"
    End Select

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire




    • Modifié EhJoe vendredi 21 septembre 2012 22:11 Correction faute 2
    vendredi 21 septembre 2012 22:10
  • Bonjour,

    Cf peut-être la fonction précédente déjà suggérée. Au lieu de faire des tests on peut aussi utiliser une structure de données (une liste qui associe une valeur et sa traduction). L'idée générale est de gérer les cas particuliers, de généraliser quand c'est possible et une fois que cela marche pour 0 à 999 c'est fini (car la lecture se fait par groupe de 3 chiffres maxi par exemple 136 567 812 = cent trente six MILLIONS cinq cent soixante sept MILLE huit cent douze, on traduit juste les groupes de trois chiffres avec l'unité derrière).

    A priori il faut traduire 1 à 16, traduire 20, 30, 40, 50, 60 etc... 17 à 19, 21 à 29, 31 à 39, 41 à 49, etc... doit être la traduction de la dizaine et de l'unité correspondante etc... pour les centaines c'est le chiffre de la centaine et les dizaines déjà traduites etc...

    Si ce n'est pas une extrême urgence, je vous suggère de le faire vous même. C'est à mon avis un très bon exemple pour montrer qu'un problème qui parait relativement complexe se règle finalement assez facilement en le décomposant en une multitude de sous-problèmes...

    Et donc vous pourrez l'utilser non seulement pour la date mais pour tous les nombres que vous pourriez rencontrer...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    vendredi 21 septembre 2012 22:10
    Modérateur