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 :

Changer le format d'écriture de la date


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut Changer le format d'écriture de la date
    Salut tout le monde
    SVP Gentelman
    Si vous pouvez m'aider a resoudre ce probleme
    J'ai 3 TextBox
    TextBox1 pour taper la date de naissance
    TextBox2.Text = DateTime.Now.Date ( En Form1 Load )
    TextBox3 pour afficher automatiquement l'age
    Le code fonctionne tres tres bien mais il faut taper la date comme ca ( 17-05-2011 ) si non le code ne fonctionne pas
    Tandisque moi .. je veux taper la date comme ca ( 17/05/2011 ) .. et se sera ma fete si on peut taper les deux formats
    Mon code :
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Imports System.Globalization
    Public Class Form1
        Function CalculateAge(ByVal vDate1 As Date, ByVal vdate2 As Date) As String
            Dim vYears As Integer, vMonths As Integer, vDays As Integer
            vMonths = DateDiff("m", vDate1, vdate2)
            vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
            If vDays < 0 Then
                vMonths = vMonths - 1
                vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
            End If
            vYears = vMonths \ 12
            vMonths = vMonths Mod 12
            CalculateAge = vYears & "Year " & " " & vMonths & "Month " & " " & vDays & "Day"
        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            TextBox2.Text = DateTime.Now.Date
        End Sub
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim textbox1Date, textbox2Date As DateTime
            If DateTime.TryParseExact(TextBox1.Text, "dd/MM/yyyy", New CultureInfo("de-DE"), DateTimeStyles.None, textbox1Date) AndAlso _
       DateTime.TryParseExact(TextBox2.Text, "dd/MM/yyyy", New CultureInfo("de-DE"), DateTimeStyles.None, textbox2Date) Then
                TextBox3.Text = CalculateAge(textbox1Date, textbox2Date)
            End If
            If TextBox1.Text = "" Then
                TextBox3.Text = ""
            End If
        End Sub
    End Class
    Merci beaucoup d'avance pour l'aide
    Amicalement
    MADA

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 611
    Points : 9 744
    Points
    9 744
    Billets dans le blog
    3
    Par défaut
    Regarde du cote de DateTime.TryParse.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Expert confirmé
    Inscrit en
    avril 2008
    Messages
    2 542
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : avril 2008
    Messages : 2 542
    Points : 4 343
    Points
    4 343
    Par défaut
    BONJOUR
    Voir aussi du cote du control MaskedTextBox qui simplifie l'existence ...

  4. #4
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    BONJOUR
    Voir aussi du cote du control MaskedTextBox qui simplifie l'existence ...
    MABROUKI ..merci beaucoup mais franchement je deteste cette MaskedTextBox

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 649
    Points : 14 569
    Points
    14 569
    Par défaut
    Salut
    je veux taper la date comme ça ( 17/05/2011 ) .. et se sera ma fête si on peut taper les deux formats
    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim StrvDate  As String = Cstr(vDate1)
    StrvDate.Replace("/,"-")
    peut être , (je n'est que très peu de connaissance en VB.net, mais il me semble que )
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut Fusion de messages consécutifs.
    Merci beaucoup ProgElect
    Ravi de vous rencontrer maitre
    Je vais essayer des que je rentre chez moi

    Malheureusement cher ProgElect
    Voila ce que j'ai obtenu ..
    Nom : 1.jpg
Affichages : 409
Taille : 180,1 Ko
    Amicalement
    MADA

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 718
    Points : 5 459
    Points
    5 459
    Par défaut
    Bonjour,
    regardez la coloration syntaxique, il manque un guillemet (")
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #8
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Bonjour,
    regardez la coloration syntaxique, il manque un guillemet (")
    Merci beaucoup rv26t
    Vs avez bien raison .. mais
    Je l'ai corrige mais ca ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim StrvDate As String = CStr(vDate1)
            StrvDate.Replace("/", "-")
    Cordialement
    MADA

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2012
    Messages : 24
    Points : 38
    Points
    38
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StrvDate = StrvDate.Replace("/", "-")

  10. #10
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 364
    Points : 2 451
    Points
    2 451
    Par défaut
    Bonjour,

    Il faut noter que le format de la date est celui défini dans les paramètres régionaux du système. Chez moi, je peux encoder JJ/MM/AAAA.
    Pour info encore, StrvDate = StrvDate.Replace("/", "-") doit remplacer le "/" par "-" dans la chaine saisie? Or en relisant ta question initiale, il me semble que tu veux pouvoir encoder directement JJ/MM/AAAA et non JJ-MM-AAAA corrigé ensuite.
    Je te propose donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim MaDate As Date
            MaDate = TextBoxSaisieDate.Text
            MessageBox.Show(MaDate)
    Comme illustré ci-dessous, VB.Net convertit parfaitement le texte d'une date dans le format qui lui convient.
    Nom : Date.jpg
Affichages : 546
Taille : 8,3 Ko
    J'espère que ceci t'aidera ...

  11. #11
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par olive7140 Voir le message
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StrvDate = StrvDate.Replace("/", "-")
    Merci olive7140 pour l'aide
    Mais malheureusement aussi ca ne fonctionne pas
    Amicalement
    MADA

  12. #12
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Bonjour,

    Il faut noter que le format de la date est celui défini dans les paramètres régionaux du système. Chez moi, je peux encoder JJ/MM/AAAA.
    Pour info encore, StrvDate = StrvDate.Replace("/", "-") doit remplacer le "/" par "-" dans la chaine saisie? Or en relisant ta question initiale, il me semble que tu veux pouvoir encoder directement JJ/MM/AAAA et non JJ-MM-AAAA corrigé ensuite.
    Je te propose donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim MaDate As Date
            MaDate = TextBoxSaisieDate.Text
            MessageBox.Show(MaDate)
    Comme illustré ci-dessous, VB.Net convertit parfaitement le texte d'une date dans le format qui lui convient.
    Nom : Date.jpg
Affichages : 546
Taille : 8,3 Ko
    J'espère que ceci t'aidera ...
    Phil Rob
    Vous m'avez sauver plusieurs fois .. merci beaucoup .. tres gentil de votre part
    Mais j'ai pas pu integrer votre code dans le mien
    Cordialement
    MADA

  13. #13
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 364
    Points : 2 451
    Points
    2 451
    Par défaut
    Je reprends ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim textbox1Date, textbox2Date As DateTime
            If DateTime.TryParseExact(TextBox1.Text, "dd/MM/yyyy", New CultureInfo("de-DE"), DateTimeStyles.None, textbox1Date) AndAlso _
       DateTime.TryParseExact(TextBox2.Text, "dd/MM/yyyy", New CultureInfo("de-DE"), DateTimeStyles.None, textbox2Date) Then
                TextBox3.Text = CalculateAge(textbox1Date, textbox2Date)
            End If
            If TextBox1.Text = "" Then
                TextBox3.Text = ""
            End If
        End Sub
    et j'en fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       ' Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave ' POUR NE PAS TERNTER LE CALCUIL A CHAQUE CARACTERE ENCODE
            Dim textbox1Date, textbox2Date As Date   ' Au lieu de DateTime !!! D'ailleurs, les arguments de ta fonction CalculateAge sont bien de type Date
    textbox1Date = TextBox1.Text  ' Faire d'abord laz conversion du Text en Date
    textbox2Date = TextBox2.Text
                TextBox3.Text = CalculateAge(textbox1Date, textbox2Date)
            End If
            If TextBox1.Text = "" Then
                TextBox3.Text = ""
            End If
        End Sub
    Cela doit fonctionner et tu pourras même encoder la date dans l'un et l'autre format !

  14. #14
    Expert confirmé
    Inscrit en
    avril 2008
    Messages
    2 542
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : avril 2008
    Messages : 2 542
    Points : 4 343
    Points
    4 343
    Par défaut
    BONJOUR

    Le format de saisie de Date est gouverné par le panneau de configuration de l'user dans :

    Panneau de Configuration -> Régions (Windows 10)...

    Sur ma machine configurée en Langue française avec format court de Date (dd/MM/yyyyy)
    la Date Saisie peut être saisie au choix :

    1/ Au format STANDARD COURT suivant : "2007-07-04"
    2/ Au format STANDARD FRANCAIS COURT suivant : "04/07/2007"


    Pour tester cette situation voici l'exemple (VS 2010 étant installé sur ma machine)


    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    Imports System.Globalization
     
    Public Class Form2
        Private ci As CultureInfo
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            ci = CultureInfo.CurrentCulture
            TextBox1.Text = "04/07/2007"
            TextBox2.Text = "04-09-1980"
     
        End Sub
     
        Private Sub TextBox1_TextChanged(sender As Object, e As System.EventArgs) Handles TextBox1.TextChanged
            Dim fmt As String = "dd/MM/yyyy"
            If IsDate(TextBox1.Text) Then
                Dim testdate As DateTime = Nothing
                If Date.TryParseExact(TextBox1.Text, fmt, ci, DateTimeStyles.AssumeLocal, testdate) Then
                    Label1.Text = Date.ParseExact(TextBox1.Text, fmt, ci, DateTimeStyles.AssumeLocal)
                Else
                    Label1.Text = "format de date invalide !!!"
                    Me.ActiveControl = TextBox1
                    TextBox1.Select(0, TextBox1.Text.Length)
     
                End If
            End If
        End Sub
     
        Private Sub TextBox2_TextChanged(sender As Object, e As System.EventArgs) Handles TextBox2.TextChanged
            Dim fmt As String = "dd/MM/yyyy"
            If IsDate(TextBox2.Text) Then
                Dim testdate As DateTime = Nothing
                If Date.TryParseExact(TextBox2.Text, fmt, ci, DateTimeStyles.AssumeLocal, testdate) Then
                    Label2.Text = Date.ParseExact(TextBox2.Text, fmt, ci, DateTimeStyles.AssumeLocal)
                Else
                    Label2.Text = "format de date invalide !!!"
                    Me.ActiveControl = TextBox2
                    TextBox2.Select(0, TextBox2.Text.Length)
     
                End If
            End If
        End Sub
    End Class
    ce form accepte les 2 formats mentionnés ...

  15. #15
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : décembre 2015
    Messages : 217
    Points : 112
    Points
    112
    Par défaut
    Enfin maitre Phil Rob ..ca fonctionne
    je vous remercie beaucoup respectable homme
    Parfaitement resolu par votre dernier code
    Merci aussi : MABROUKI pour vos efforts
    Cordialement
    MADA

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

Discussions similaires

  1. [IP-2010] Changer le format de colonne (de Texte à Date)
    Par MrMeteo dans le forum InfoPath
    Réponses: 2
    Dernier message: 22/10/2014, 16h47
  2. Comment changer le format de DATE dans Oracle
    Par khanfir dans le forum Oracle
    Réponses: 3
    Dernier message: 20/04/2010, 20h55
  3. [Dates] changer le format d'une date.
    Par maraly dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 17h17
  4. Changer le format de date en dd/mm/yy
    Par polianita dans le forum Access
    Réponses: 6
    Dernier message: 21/08/2006, 15h26
  5. commant changer le format d'une date?
    Par tribaleur dans le forum ASP
    Réponses: 5
    Dernier message: 02/06/2006, 08h55

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