Comment transformer une date jj/mm/aaaa en aaaaMMjj ?

Résolu
Rocklavy Messages postés 2 Date d'inscription samedi 21 septembre 2019 Statut Membre Dernière intervention 21 septembre 2019 - Modifié le 21 sept. 2019 à 17:14
Whismeril Messages postés 18392 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 mai 2023 - 21 sept. 2019 à 19:09
Bonjour, je cherche un moyen de transformer une date sous format jj/mm/aaaa en aaaaMMjj.

C'est dans le cadre d'un exercice.
Je dois créer un login et un mot de passe suite à la saisie de certaines informations (nom, prénom, date de naissance, département de naissance et sexe). Pour créer le mot de passe je dois concaténer le sexe (c'est une variable integer), le département de naissance et la date de naissance en format aaaaMMjj.

Mais je suis obligé de saisir la date en jj/mm/aaaa.

Vous auriez la solution ?

Voici le code
Sub Main()
        Dim nom, prenom As String
        Dim sexe, dep As Integer
        Dim daten As Date ' Ici j'initialise la variable daten.
        Dim login, mdp As String

        Console.Write("Saisir le nom: ")
        nom = Console.ReadLine
        Console.Write("Saisir le prenom: ")
        prenom = Console.ReadLine
        Console.Write("Saisir le sexe 1:Masculin, 2:Féminin : ")
        sexe = Console.ReadLine
        Console.Write("Saisir la date de naissance en jj/mm/aaaa: ") ' Je saisi la date.
        daten = Console.ReadLine
        Console.Write("Saisir le numéro du departement de naissance: ")
        dep = Console.ReadLine

        login = Left(prenom, 1) & nom

        mdp = daten & sexe & dep ' Je créer le mot de passe.

        Console.WriteLine(prenom & " " & nom)
        Console.WriteLine("Nom d'utilisateur: " & login)
        Console.WriteLine("Mot de passe: " & mdp)
        Console.Read()
    End Sub

2 réponses

Rocklavy Messages postés 2 Date d'inscription samedi 21 septembre 2019 Statut Membre Dernière intervention 21 septembre 2019
Modifié le 21 sept. 2019 à 17:15
Bon j'ai réussi en transformant la date en string puis en utilisant les fonctions Left, Mid et Right.

Dim aaaa, mm, jj As String

' ...

jj = Left(daten, 2)
mm = Mid(daten, 4, 2)
aaaa = Right(daten, 4)


Mais il n'y aurait pas une méthode moins barbare ?
0
Whismeril Messages postés 18392 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 mai 2023 623
21 sept. 2019 à 19:09
Bonjour

Tout d’abord left, mid etc... c’est pas du vb.net, c’est du vb6.
Microsoft tolère un vb6 dans vb.net, cependant ce faisant on mélange programmation séquentielle et programmation objet, je ne conseille pas.
Voici un article qui traite du sujet https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net

Pour ton problème, en restant en string (qui n’est pas une date mais du texte), tu peux splitter le texte avec / comme séparateur, tu inverses le tableau obtenu et tu le joins avec ce que tu veux comme séparateur.

Sinon tu parses le texte en DateTime dont tu utilises la méthode ToString pour spécifier un format texte.
0