Je n'arrive pas à récuperer l'année en cours [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
5 octobre 2020
-
Messages postés
14855
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 octobre 2020
-
Bonjour,

Voici mon problème, je souhaite récupérer les 2 derniers chiffres de l'année en cours mais je butte sur ce problème j'ai essayé plusieurs solutions et d'autres glaner sur de forum

// Recup de l'année
DateTimePicker dt = new DateTimePicker();
//string aaa = dt.Value.ToString();
//Remove a substring from the middle of the string.
string anneeCourte = dt.Text.Substring(dt.Text.IndexOf("2020"), 2);
//Console.WriteLine(anneeCourte);
TbxModif.Text = anneeCourte;

Note :
TbxModif est une textbox de mon form actuel que je me sert pour voir les résultats de certaine actions

J'ai essayé aussi cette façon car j'ai un numéro dans la case TbxNumInter qui est de la forme :20-XXXXX, mais je n'arrive pas à garder le format au bout de plusieurs itérations.

string numInter = TbxNumInter.Text.Replace("-", "");
// Je supprime un élément particulier de ma string
TbxModif.Text = numInter;
int newNumber = 0;
newNumber = Convert.ToInt32(numInter);//attention le new number ets un INT
newNumber += 1;
string newNumInter = String.Empty; // bien creer une variable correspondant à ce que l'on veut Obtenir STring pour string à manipuler etc etc
newNumInter = Convert.ToString(newNumber);
TbxModif.Text = newNumInter;


Merci à ceux qui pourront m'indiquer ou je me trompe.

Bon Dimanche

3 réponses

Messages postés
14855
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 octobre 2020
444
Bonjour

En fait ton erreur est celle de la majorité des autodidactes, dont moi en mon temps, tu t’es lancé dans ton projet en faisant l’impasse sur les bases.
Si tu avais appris ces bases, tu saurais qu’une date c’est pas du texte.
Tu ne saurais peut-être pas qu’il s’agit d’un nombre que l’homme dans sa grande perversité a décidé d’exprimer en base 60, des secondes au minutes, en base 24 pour les heures etc...
Mais tu aurais appris à en utiliser les méthodes et propriétés de bases.
Year par exemple, retourne l’année de n’importe quelle date en int, car oui c’est un entier et si tu veux travailler sur cette valeur par la suite c’est le mieux.

Par contre, s’il s’agit de composer un texte ( comme ton numéro 20_XXX..) alors une des surcharges de ToString() permet de spécifier un format d’expression d’une date en texte, comme par exemple juste les 2 derniers chiffres de l’année.
On peut même utiliser ce principe dans string.Format et composer directement le numéro en question.

Ayant appris les bases tu aurais au moins vu quelques exemples de tout ce dont je viens de te parler. Peut-être suffisamment pour composer toi même ton numéro, mais en tout cas pour savoir où chercher pour le faire.

Le meilleur conseil que je puisse te donner et de laisser ton projet de coté quelques jours et de suivre un cours en ligne et depuis le début même si ça te paraît bateau. Celui de Tahé est très bien https://tahe.developpez.com/dotnet/csharp/ en moyenne il faut 4 à 5 jours pour le suivre. Comme tu as posté ta première question fin aout et qu'aujourd'hui tu postes une question que tu n'aurais pas eue avec ce cours, ces quelques jours auraient déjà été rentabilisés.

            DateTime maDate = DateTime.Now;

            //si tu as besoin des faire des calculs avec l'année
            int annee = maDate.Year;
            Console.WriteLine("Année en entier {0}", annee);
            int annee2chiffres = (annee % 1000) % 100; //on divise par 1000 et on garde le reste pour 2020, il reste 20, pour 1990, il reste 990, ensuite on divise par 100 et on garde le reste pour 20, il reste 20, pour 990, il reste 90
            Console.WriteLine("Année deux chiffres {0}", annee2chiffres);

            //si tu veux juste afficher une information d'année
            Console.WriteLine("Date en 2 chiffres, juste à l'affichage {0}", maDate.ToString("yy"));
            Console.WriteLine("Date en 2 chiffres, juste à l'affichage 2 {0:yy}", maDate);


            //enfin composer un numéro
            int monNumero = 1234;
            Console.WriteLine("Numéro {0:yy}-{1:000000}", maDate, monNumero);


PS, pour tes prochaines questions, ce petit tuto explique comment utiliser correctement les balises de codes https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
5
Date d'inscription
dimanche 30 août 2020
Statut
Membre
Dernière intervention
5 octobre 2020
1
Bonjour,

Merci pour ta réponse, même si je trouve ta pédagogie discutable.

Bonne journée

Messages postés
14855
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 octobre 2020
444
Bonjour
En fait, l’expérience a montré que si on dit gentiment.
« Au lieu de perdre du temps à chercher et à poser des questions simples apprend les bases » 99% des demandeurs s’en moquent. Et repose quelques jour plus tard une question où le manque de bases est flagrant.

La méthode un peu plus incisive fait réagir ceux qui ont l’amour propre. C’est ton cas manifestement.
Et, si tu es dans le 1% qui aurait compris gentiment, désolé.