bonjour,
Est ce qu'il est possible de convertir une variable chaine 'aaaammdd' en variable date sous une forme plus logique dd/mm/aaaa ?
A+
bonjour,
Est ce qu'il est possible de convertir une variable chaine 'aaaammdd' en variable date sous une forme plus logique dd/mm/aaaa ?
A+
Bonjour,
Pour convertir une chaîne en TDateTime tu peux utiliser la fonction StrToDateTime.
salut,
oui mais j'ai l'impression que cette fonction ne fonctionne seulement si la chaine contient des séparateurs. Alors que dans mon cas tous ce tient ?
A+
En fait la version par défaut utilise les paramètres régionaux de Windows, donc s'attend à recevoir une date au format chaîne identique à celui définit par tes préférences.
Si tu veux utiliser un format autre, tu dois renseigner un record de type TFormatSettings avec le format souhaité et le passer en paramètre de StrToDateTime.
Salut
Primo, une date au sens de Delphi n'a pas de format intrinsèque, le format est juste une représentation. Rappel : Les dates sont des données binaires plus précisément un nombre de jours depuis une date de référence, ce qui permet une simplification des calculs du type nombre de jours entre deux dates...
Ton problème est d'une simplicité enfantine, je pense que si tu avais réfléchis un peu plus, tu aurais trouvé. Tu disposes d'une chaîne de 8 caractères, les 4 premiers sont l'année, les deux suivants sont le mois et les deux derniers sont le jour dans le mois. Il te suffit donc de récupérer chacune des composantes (fonction copy), de convertir chacune de ces composantes en type Word et enfin de convertir à l'aide EncodeDate les composantes en une date binaire.
En espérant t'avoir dépanné.
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 uses SysUtils; .... procedure AAAAAMMDDToDate(const Value: String): TDateTime; begin try // Notation plus compacte que les explications // tout est fait en une seule instruction. Result := EncodeDate( StrTotInt(Copy(Value, 1, 4), // Année StrTotInt(Copy(Value, 5, 2), // mois StrTotInt(Copy(Value, 7, 2) // jour ); except raise Exception.CreateFmt('Date incorrecte "%s"', [Value]); end; End; ... // pour l'emploi... ShowMessage(DateToStr(AAAAAMMDDToDate('20090330')));
Cdlt
![]()
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Partager